如何在屏幕上显示PIL图像?

Bar*_*ski 59 python image python-imaging-library

我正在使用PIL库进行一些图像编辑.关键是,我不想每次都将图像保存在硬盘上以便在资源管理器中查看.是否有一个小模块可以让我设置一个窗口并显示图像?

mar*_*eau 79

PIL教程:

获得Image类的实例后,可以使用此类定义的方法来处理和操作图像.例如,让我们显示刚刚加载的图像:

     >>> im.show()

  • PIL的内置`show()`方法是"脚本一些其他程序显示它"的最简单版本.(在早期的Windows系统上,你最终会得到一大堆MSPaint窗口.)即使它不起作用,也值得建议和尝试.你可以实际做类似的事情,并且几乎一样简单,例如,在每个图像上显式启动MSPaint.exe ...... (3认同)
  • @abarnert:实际上这个问题听起来像是[Windows Live Photo Gallery 2011中的错误](http://support.microsoft.com/kb/2581947),并且有一个更新的版本可以[下载](http:// www .microsoft.com/zh-CN/downloaded/details.aspx?id = 29219)可能会修复PIL`show()`问题. (3认同)
  • 这是因为Windows实时照片库与您调用方法时创建的临时文件PIL的类型相关联 - 在Windows上可能默认为.bmp,它不支持现代图像文件格式的许多功能.尝试在`im.show()`调用之前将图像格式属性显式设置为.png(即`im.format ="PNG"`). (2认同)

小智 15

您可以使用 pyplot 来显示图像:

from PIL import Image
import matplotlib.pyplot as plt
im = Image.open('image.jpg')
plt.imshow(im)
plt.show() # image will not be displayed without this
Run Code Online (Sandbox Code Playgroud)


Har*_*vey 9

我测试了一下,对我来说很好用:

from PIL import Image
im = Image.open('image.jpg')
im.show()
Run Code Online (Sandbox Code Playgroud)

  • @kawingkelvin 问题是“如何在屏幕上显示 PIL 图像?”。您应该在其他地方寻求针对您的具体情况的答案...也许在这里:/sf/ask/3870206021/ (3认同)
  • 这似乎不适用于 google colab 笔记本。 (2认同)

Puc*_*ckl 7

也许你可以使用matplotlib,你也可以用它绘制普通图像.如果你调用show(),图像会弹出一个窗口.看看这个:

http://matplotlib.org/users/image_tutorial.html


小智 5

如果您发现PIL在某些平台上有问题,则使用本机图像查看器可能会有所帮助。

img.save("tmp.png") #Save the image to a PNG file called tmp.png.
Run Code Online (Sandbox Code Playgroud)

对于MacOS:

import os
os.system("open tmp.png") #Will open in Preview.
Run Code Online (Sandbox Code Playgroud)

对于大多数具有X.Org和桌面环境的GNU / Linux系统:

import os
os.system("xdg-open tmp.png")
Run Code Online (Sandbox Code Playgroud)

对于Windows:

import os
os.system("powershell -c tmp.png")
Run Code Online (Sandbox Code Playgroud)


Apo*_*los 5

您可以使用 Tkinter 在您自己的窗口中显示图像,无需依赖于系统中安装的图像查看器:

import Tkinter as tk
from PIL import Image, ImageTk  # Place this at the end (to avoid any conflicts/errors)

window = tk.Tk()
#window.geometry("500x500") # (optional)    
imagefile = {path_to_your_image_file}
img = ImageTk.PhotoImage(Image.open(imagefile))
lbl = tk.Label(window, image = img).pack()
window.mainloop()
Run Code Online (Sandbox Code Playgroud)

对于 Python 3,替换import Tkinter as tkimport tkinter as tk.

  • 您在哪里看到代码涉及将图像保存到磁盘???该问题要求一种编辑图像的方法,而无需每次都将其保存在磁盘上。但一开始您必须至少从磁盘打开一次映像。然后,您可以多次处理和查看作为“img”加载到内存中的图像,而无需涉及任何磁盘操作。 (4认同)