Base64是广泛使用的格式之间的通用格式吗?

时间:2014-03-28 19:16:50

标签: ruby-on-rails image

说实话,我并不是很了解图像格式,或者实际上是什么base64,但是我要说我将.jpg转换为base64,如下所示:

  my_base_64 = Base64.strict_encode64('kittens.jpg')

然后我可以将这个base64字符串显示为.png,如下所示:

<img src="data:image/png;base64,<%= my_base_64 %>" />

我可以右键单击并保存图像,.jpg看起来确实是完全成熟的.png,但没有透明度。

这是base64的重点吗?一种通用格式,可以使任何图像成为任何其他图像?

如果你看看我是如何做到的,那么这适用于所有图像类型吗?不仅是.jpg,还有.tiff jpeg2000等...我可以列出哪些格式不起作用?例如,.psd可能根本不会工作。

1 个答案:

答案 0 :(得分:0)

base64仅使用字符a-z A-Z 0-9 + /

使用base64,您可以仅使用上述可打印字符对任何二进制文件进行编码。这允许您在通常不接受二进制数据的上下文中包含二进制内容。例如,电子邮件可以将图像包含为base64,这样您就不必通过Web请求加载图像(img src = url)。许多电子邮件客户端不会加载图像,因为这样做可能会向垃圾邮件发送者表明电子邮件收件人通过图像URL中的某个跟踪标记存在。因此,通过将图像包含为base64,它随电子邮件本身一起提供。

base64的另一个例子是get-pip.py,它是一个python脚本,其中包含ZIP存档的完整副本作为base64字符串。这允许它解决需要自己安装自身的依赖性:它只使用该存档来导入pip代码,以便它可以在本地系统上安装pip。

base64不是一个神奇的图像转码器。可能,浏览器正在读取base64字符串,将其转换为二进制格式,并从结果图像中的某些神奇字节代码确定它是JPG。当您需要以类似文本的形式发送二进制数据时,请使用base64。