我想使用base64模块将图像编码为字符串.我遇到了一个问题.如何指定要编码的图像?我尝试将目录用于图像,但这只会导致编码目录.我想要对实际的图像文件进行编码.
编辑
我试过这个片段:
with open("C:\Python26\seriph1.BMP", "rb") as f:
data12 = f.read()
UU = data12.encode("base64")
UUU = base64.b64decode(UU)
print UUU
self.image = ImageTk.PhotoImage(Image.open(UUU))
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Traceback (most recent call last):
File "<string>", line 245, in run_nodebug
File "C:\Python26\GUI1.2.9.py", line 473, in <module>
app = simpleapp_tk(None)
File "C:\Python26\GUI1.2.9.py", line 14, in __init__
self.initialize()
File "C:\Python26\GUI1.2.9.py", line 431, in initialize
self.image = ImageTk.PhotoImage(Image.open(UUU))
File "C:\Python26\lib\site-packages\PIL\Image.py", line 1952, in open
fp = __builtin__.open(fp, "rb")
TypeError: file() argument 1 must be encoded string without NULL bytes, …Run Code Online (Sandbox Code Playgroud) 我有一个ipython笔记本,带有我本地驱动器的嵌入式图像.我期待它与代码单元的输出一起嵌入JSON中,但是当我分发笔记本时,图像并没有出现在用户身上.在Notebook中嵌入图像的推荐方法是什么,如果用户重新运行代码单元,清除单元格输出等,它不会消失?
笔记本系统缓存包含的图像,但它们仅持续到重新启动服务于笔记本的python"内核".如果我重命名磁盘上的图像文件,我可以关闭并重新打开笔记本,它仍然显示图像; 但是当我重新启动内核时它会消失.
编辑:如果我生成一个图像作为代码单元格输出,然后将笔记本导出为html,图像嵌入在html中作为编码数据.当然必须有一种方法来挂钩这个功能并将输出加载到降价(或更好的"原始nbconvert")单元格?
from IPython.display import Image
Image(filename='imagename.png')
Run Code Online (Sandbox Code Playgroud)
将导出(with ipython nbconvert)到包含以下内容的html:
<div class="output_png output_subarea output_execute_result">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnAAAAFgCAYAAAA...
</div>
Run Code Online (Sandbox Code Playgroud)
但是,即使我手动将此片段嵌入到markdown单元格中,也无法显示图像.我究竟做错了什么?
PS现有(旧)答案提供了一些非常有用的指针,但不是解决方案.