可以直接将图像编码到程序中,而不是使用目录来引用图像吗?
答案 0 :(得分:8)
您可以使用base64模块将数据嵌入到程序中。来自base64 documentation:
>>> import base64
>>> encoded = base64.b64encode('data to be encoded')
>>> encoded
'ZGF0YSB0byBiZSBlbmNvZGVk'
>>> data = base64.b64decode(encoded)
>>> data
'data to be encoded'
使用此功能,您可以对图像进行base64编码,并将结果字符串嵌入到程序中。要获取原始图像数据,您可以将该字符串传递给base64.b64decode
。
答案 1 :(得分:5)
尝试img2py脚本。它包含在wxpython的一部分(谷歌,看看你是否可以单独)。
img2py.py - 将图像转换为PNG格式并将其嵌入Python中 具有适当代码的模块,因此可以在运行时加载到程序中。好处是因为它是Python源代码,它可以使用freeze,py2exe等以.pyc或'编译'的形式提供给程序。 用法:
img2py.py [options] image_file python_file
答案 2 :(得分:1)
不需要对字符串进行base64编码,只需将其repr
粘贴到代码中
答案 3 :(得分:0)
如果您的意思是,将代表图像的字节存储在程序代码本身中,您可以通过base64编码图像文件并将变量设置为该字符串来完成。
您还可以声明一个字节数组,其中数组的内容是表示图像的字节。
在这两种情况下,如果要对图像进行操作,可能需要解码源代码中包含的值。
警告:您可能正在这里踩着表演雷区。
更好的方法可能是将图像存储在模块的目录结构中,并根据需要加载(甚至缓存它)。您可以编写一个通用的方法/函数,根据某些标识符加载正确的图像,该标识符映射到作为模块的一部分的特定图像文件名。