当在python shell中使用图像时,我使用image.show(),其中image是Image的一个实例。很久以前没有发生任何事情,但在定义了一个名为“xv”的海市蜃楼的符号链接后,我很高兴。
最近几天,show()将调出ImageMagick的显示屏和Mirage。目前还不清楚show()获取运行内容的信息。文档没有帮助。如何让它表现出来并只提出它认为的xv?
答案 0 :(得分:5)
有点过时但是......
我解决了这个问题,更改了文件/usr/lib/python2.7/dist-packages/PIL/ImageShow.py
的代码。缺少return
类show
类的方法Viewer
(第66行附近):return self.show_image(image, **options)
。
答案 1 :(得分:3)
嗯,首先,im.show仅用于调试目的,但不保证可以正常工作。
尽管如此,您始终可以查看源代码(打开“pydoc PIL”,FILE部分指出模块所在的位置):
在Windows中,PIL将使用“开始/等待文件名”
在Mac中,它使用“open -a /Applications/Preview.app”
在Linux上,如果找到则显示'或'xdg-open'。
答案 2 :(得分:1)
我找到的一种解决方法。
我用过:
image.save('something.png')
使用默认预览程序从文件管理器打开png。
然后,每当我再次调用save
时,预览器会自动刷新,并且我获得了新图像:)
答案 3 :(得分:0)
它能够将查看器指定为command
方法的show
参数,例如
img.show(命令= 'FEH')
答案 4 :(得分:0)
我遇到了同样的问题,这是PIL中的一个问题。您可以通过以下方式更改PIL代码:
在ImageShow.py文件中替换
return "start /wait %s && del /f %s" % (file,file)
与
return "start /wait %s && del /wait /f %s" % (file,file)
答案 5 :(得分:0)
ImageShow
包含ImageShow._viewers
中支持和可用的查看者列表。在我的盒子上,找到了两个观众:
>>> import PIL.ImageShow
>>> PIL.ImageShow._viewers
[<PIL.ImageShow.DisplayViewer instance at 0x2587ef0>, <PIL.ImageShow.XVViewer instance at 0x2587f80>]
不幸的是ImageShow.show()
使用了所有可用的观看者。这样就会显示两个窗口。
解决方案是将查看器注册表仅减少到第一个可用的查看器:
>>> PIL.ImageShow._viewers = [ PIL.ImageShow._viewers[0] ]