# Image data from [Wikipedia][1]
>>>image_data = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x05\x00\x00\x00\x05\x08\x06\x00\x00\x00\x8do&\xe5\x00\x00\x00\x1cIDAT\x08\xd7c\xf8\xff\xff?\xc3\x7f\x06 \x05\xc3 \x12\x84\xd01\xf1\x82X\xcd\x04\x00\x0e\xf55\xcb\xd1\x8e\x0e\x1f\x00\x00\x00\x00IEND\xaeB`\x82'
# String representation of bytes object includes leading "b" and quotes,
# making the uri invalid.
>>> encoded = base64.b64encode(image_data) # Creates a bytes object
>>> 'data:image/png;base64,{}'.format(encoded)
"data:image/png;base64,b'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='"
# Calling .decode() gets us the right representation
>>> encoded = base64.b64encode(image_data).decode('ascii')
>>> 'data:image/png;base64,{}'.format(encoded)
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='
7条答案
按热度按时间alen0pnh1#
在Python中应该是这样的:
感谢@cnst注解,我们需要前缀
data:image/{ext};base64,
感谢@ramazanpolat answer,我们需要
decode('utf-8')
xmd2e60i2#
在python3中,
base64.b64encode
返回一个bytes
示例,因此如果您正在处理unicode文本,则需要调用decode
来获得一个str
。如果直接使用
bytes
,则可以使用base64.b64encode
的输出,而无需进一步解码。wlp8pajw3#
puruo6ea4#
在Unix中应该这样做:
b64encode
产生的编码影像包含页首和页尾,且行长度不超过76个字符。此格式是SMTP通信中的典型格式。为了使编码图像可嵌入HTML/CSS,
sed
和tr
命令分别删除页眉/页脚(第一行和最后一行)和所有换行符。然后只需使用HTML中的长编码字符串
或在CSS中
lsmd5eda5#
b64 encode在某些发行版中默认不安装(@克林特Pachl的答案),但python安装了。
所以,只需用途:
python -mbase64 image.jpeg | tr -d '\n' > b64encoded.txt
以便从命令行获取base64编码图像。
其余步骤已由@克林特Pachl(https://stackoverflow.com/a/20467682/1522342)回答
pu3pd22g6#
这在Python3中应该是可行的:
调用decode以获取str,如python3 base64中所示。b64encode返回一个bytes示例。
kg7wmglp7#
如果你想在Node.js中做这个,请注意: