如何使用普通 python(不是 ipython)查看或保存 <IPython.core.display.Image object>?

问题描述 投票:0回答:2

在学习dask的过程中,我尝试使用“visualize”方法/函数生成程序图可视化。但是,我不使用笔记本电脑。据我所知,没有办法让 dask 将这些图输出到 IPython.core.display.Image 对象以外的任何对象,我不知道如何在常规 python 中查看该对象。由于各种原因,使用 IPython 运行我的代码对我来说是不切实际的。

有什么方法可以在常规 Python 脚本/shell 中显示这些对象吗?或者至少,将它们保存到磁盘上的标准图像文件中?

谢谢!

python image ipython dask
2个回答
4
投票

.visualize
方法允许您指定要输出的文件名,以及要传递给dot/graphviz的其他参数:

d.visualize(filename='dask.pdf')

生成 PDF 文件输出,而不是尝试内联表示。支持各种其他图形格式,例如 PNG(尽管它可能取决于您安装 graphviz 的方式)。

您还可以从 Image 实例中提取图像字节

im = d.visualize()
open('output.png', 'wb').write(im.data)

这将是PNG格式(也由

im.format
给出)。


0
投票

这个问题还有另一个可能的答案。如果您检查一个名为

IPython.core.display.Image
img
对象,您可以看到它有一个
data
属性,该属性将图像数据保存为字节。您可以使用 Pillow 阅读并显示该图像,由于历史原因,该图像的导入名称为 PIL。

import os
import PIL

# img as a <IPython.core.display.Image object>
pimg = PIL.Image.open(io.BytesIO(img.data))
pimg.show()

这显示了系统的默认应用程序中的图像。这当然可以用

PIL.Image.save()
方法保存(这里假设为 png):

pimg.save('/path/to/some-file.png')

文档

安装PIL

python -m pip install Pillow

如果您有问题,请参阅文档

Dask 额外小费

如果您想可视化

.compute()
的作用,您可能需要添加
optimize_graph=True
.visualize()
调用,因为这是
.compute()
的默认设置,但 不是 .visualize() 的默认
 

© www.soinside.com 2019 - 2024. All rights reserved.