首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对PNG图像进行base-64编码,以便在CSS文件中的data-uri中使用?

如何对PNG图像进行base-64编码,以便在CSS文件中的data-uri中使用?
EN

Stack Overflow用户
提问于 2011-06-17 01:18:06
回答 7查看 50.9K关注 0票数 53

我想对一个PNG文件进行base-64编码,以便将其包含在样式表的data:url中。我该怎么做呢?

我使用的是Mac,所以在Unix命令行上运行一些东西会很好。基于Python的解决方案也很棒。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-06-17 01:20:41

这应该是在Python中完成的:

代码语言:javascript
复制
import base64
encoded = base64.b64encode(open("filename.png", "rb").read())
票数 69
EN

Stack Overflow用户

发布于 2018-03-25 19:09:49

在python3中,base64.b64encode返回一个bytes实例,因此如果您正在处理unicode文本,则有必要调用decode来获取str

代码语言:javascript
复制
# 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=='

如果您直接使用bytes,则无需进一步解码即可使用base64.b64encode的输出。

代码语言:javascript
复制
>>> encoded = base64.b64encode(image_data)
>>> b'data:image/png;base64,' + encoded
b'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='
票数 44
EN

Stack Overflow用户

发布于 2018-12-09 09:06:16

代码语言:javascript
复制
import base64

def image_to_data_url(filename):
    ext = filename.split('.')[-1]
    prefix = f'data:image/{ext};base64,'
    with open(filename, 'rb') as f:
        img = f.read()
    return prefix + base64.b64encode(img).decode('utf-8')
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6375942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档