PIL的Image.show()弹出*两个*不同的查看器

3 投票
6 回答
7027 浏览
提问于 2025-04-15 23:55

在Python的命令行里玩图片的时候,我会用image.show(),这里的image是一个图片对象。很久以前,这个命令没有任何反应,但在我把一个叫“xv”的快捷方式指向mirage之后,我就开心了。

最近几天,使用show()命令时,它会同时打开ImageMagick的显示器和Mirage。现在不太清楚show()是从哪里获取要运行的程序的信息。文档也没有提供帮助。我该怎么做才能让它只打开我想要的xv呢?

6 个回答

1

我找到了一种变通的方法。

我使用了:

image.save('something.png')

我通过文件管理器用默认的预览程序打开了这个png文件。然后每次我再次调用 save 时,预览程序会自动刷新,这样我就能看到新图像了 :)

5

这段话有点过时了,不过我还是解决了这个问题。我修改了文件 /usr/lib/python2.7/dist-packages/PIL/ImageShow.py 的代码。发现 Viewer 类里面的 show 方法缺少一个 return,大概在第66行的位置,应该加上这一行:return self.show_image(image, **options)

3

首先,im.show这个功能主要是用来调试的,并不能保证一定好用。

不过,你总是可以查看源代码(打开“pydoc PIL”,在文件部分可以看到模块的位置):

在Windows系统中,PIL会使用“start /wait filename”来打开文件。

在Mac系统中,它会用“open -a /Applications/Preview.app”来打开。

而在Linux系统中,如果找到的话会用'display',否则会用'xdg-open'。

撰写回答