2011-06-16 93 views

回答

44

这应该做它在Python:

import base64 
encoded = base64.b64encode(open("filename.png", "rb").read()) 
+0

,看起来不错。当我尝试在CSS文件中使用结果时,Firefox目前告诉我图像已损坏或被截断,但我可能在某处出错。 – 2011-06-16 17:32:02

+0

@Paul D. Waite:Base64输出是什么样的,你如何在你的CSS中使用它? – BoltClock 2011-06-16 18:09:38

+0

@BoltClock:我得到的输出是'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs + 9AAAAP0lEQVQY02P4/fv3f1z4ypUrcDYD \ niIOMkQEyH6tCdDEQZkDWRZKJ6CajKEQ3BV0Mr4noGhiw6SbJjVhNJEYhAKztct58fLlaAAAAAElF \ nTkSuQmCC \ N'。在我的CSS文件,它看起来像'背景图像:网址(数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs + 9AAAAP0lEQVQY02P4/fv3f1z4ypUrcDYD \ niIOMkQEyH6tCdDEQZkDWRZKJ6CajKEQ3BV0Mr4noGhiw6SbJjVhNJEYhAKztct58fLlaAAAAAElF \ nTkSuQmCC \ n);'。 – 2011-06-16 18:43:59

4

这应该做到这一点在的Unix

b64encode filename.png X | sed '1d;$d' | tr -d '\n' > b64encoded.png 

通过b64encode产生的经编码的图像包括页眉和页脚和没有线长于76个字符。这种格式在SMTP通信中是典型的。

要使编码图像可嵌入到HTML/CSS中,sedtr命令分别删除页眉/页脚(第一行&最后一行)和所有换行符。

然后,只需简单地使用长编码字符串在HTML

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

CSS

url(data:image/png;base64,ENCODED_PNG) 
+1

在一些发行版中不包含'b64encode'。在这种情况下,你会想使用'uuencode -m',这是一个同义词。 – matth 2016-02-03 07:24:20

相关问题