[英]Python - Pillow ImageShow.show() isn't displaying images (Raspbian)
我要做的就是在 Raspberry Pi 3 上使用 Pillow 显示图像
首先尝试使用此代码:
from PIL import Image
from PIL import ImageShow
imageA = Image.open('Moth.png')
ImageShow.show(imageA)
print("Done")
它不起作用,没有错误代码,什么都没有,它只是完全跳过了代码
我仔细研究了一下,发现图像显示器可能有问题,所以我尝试像这样添加它:
from PIL import Image
from PIL import ImageShow
imageA = Image.open('Moth.png')
ImageShow.show(imageA,title=None,command='GPicView')
print("Done")
它也没有用,我也尝试安装 fim 并使用
ImageShow.show(imageA,title=None,command='fim')
就像这个网站上的一个答案所建议的那样,但这也没有用
我确定fim已经正确安装了,所以代码肯定有问题,但是我不明白是什么,也许我没有以正确的方式导入ImageShow?
我也试过使用
imageA.show(command='fim')
但它产生相同的结果
我是 Python 编码的新手(一般而言),所以也许我只是在做一些愚蠢的事情而没有意识到
更新的答案
我认为较新版本的 PIL/Pillow 使用xdg-open
命令来显示图像。 在内部,PIL/Pillow 将内存中的图像保存为磁盘上的 PNG 文件,并调用操作系统的查看器来查看磁盘上的 PNG。 所以,我认为必须有一种方法可以将 MIME 类型“image/png”的默认查看器设置为您选择的查看器,但作为 Mac 用户,我不确定您会怎么做 - 我猜是可以使用xdg-mime
命令。
原始答案
我认为 PIL/Pillow 在 Unix/Linux 系统上显示时是这样工作的:
display
eog
“侏儒之眼”xv
因此,根据您的技能组合、耐心、磁盘空间、使用特定查看器的愿望,有多种可能性。 我不知道这些参数,所以这里有一些可能性:
选项:使用以下命令安装ImageMagick :
sudo apt install imagemagick
选项:使用以下命令安装eog :
sudo apt install eog
选项:安装xv - 我手头没有确切的命令
选项:安装feh或其他一些查看器并将其符号链接以display
,以便 PIL/Pillow 认为它正在使用ImageMagick display
sudo apt install feh
sudo ln -s /usr/bin/feh /usr/bin/display
另一种选择可能是将自定义查看器创建为 PIL 的UnixViewer
的派生类,将其自身置于查看器列表的顶部,以便首先使用它。
因此,创建一个名为"CustomViewer.py"
的文件,如下所示 - 我使用的是feh
查看器,但您可以使用任何您喜欢的应用程序:
#!/usr/bin/env python3
import shutil
import sys
from PIL import Image, ImageShow
class CustomViewer(ImageShow.UnixViewer):
format = "PNG"
options = {"compress_level": 1}
def get_command_ex(self, file, **options):
command = executable = "feh"
return command, executable
if shutil.which("feh"):
print(f'Registering custom viewer for PIL')
ImageShow.register(CustomViewer, order=-1) # Insert as primary viewer
然后,在您要使用自定义查看器的常规 Python 代码中,只需添加:
import CustomViewer
并且它会输出一条消息,说明它已加载,并且对show()
的任何后续调用都将使用您的自定义查看器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.