首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ipython笔记本中显示PIL图像

如何在ipython笔记本中显示PIL图像
EN

Stack Overflow用户
提问于 2014-10-30 09:49:10
回答 11查看 267.7K关注 0票数 184

这是我的密码

代码语言:javascript
复制
from PIL import Image
pil_im = Image.open('data/empire.jpg')

我想在上面做一些图像处理,然后在屏幕上显示。

我在python笔记本中显示PIL图像有问题。

我试过:

代码语言:javascript
复制
print pil_im

而只是

代码语言:javascript
复制
pil_im

但两者都给了我:

代码语言:javascript
复制
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=569x800 at 0x10ECA0710>
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2014-10-30 09:56:34

更新2021/11/17

当使用皮尔/枕头,木星笔记本现在有一个display内置-将直接显示图像,没有额外的大惊小怪。

代码语言:javascript
复制
display(pil_im)

木星也将显示图像,如果它只是一个单元格中的最后一行(这已经改变了,从最初的帖子)。感谢@Dean@Prabhat给出的答案。

其他方法

从档案

您还可以使用IPython的display模块加载映像。您可以从医生上读到更多信息。

代码语言:javascript
复制
from IPython.display import Image 
pil_img = Image(filename='data/empire.jpg')
display(pil_img)

来自PIL.Image对象

由于OP的要求是使用PIL,如果要显示内联图像,也可以在numpy.asarray中使用matplotlib.pyplot.imshow,如下所示:

代码语言:javascript
复制
from matplotlib.pyplot import imshow
import numpy as np
from PIL import Image

%matplotlib inline
pil_im = Image.open('data/empire.jpg', 'r')
imshow(np.asarray(pil_im))

如果您只需要预览而不需要内联,您可以这样使用show

代码语言:javascript
复制
pil_im = Image.open('data/empire.jpg', 'r')
pil_im.show()
票数 315
EN

Stack Overflow用户

发布于 2018-06-06 14:57:40

使用IPython显示器在笔记本中呈现PIL图像。

代码语言:javascript
复制
from PIL import Image               # to load images
from IPython.display import display # to display images

pil_im = Image.open('path/to/image.jpg')
display(pil_im)
票数 72
EN

Stack Overflow用户

发布于 2014-10-30 19:19:21

我发现这起作用了

代码语言:javascript
复制
# source: http://nbviewer.ipython.org/gist/deeplook/5162445
from io import BytesIO

from IPython import display
from PIL import Image


def display_pil_image(im):
   """Displayhook function for PIL Images, rendered as PNG."""

   b = BytesIO()
   im.save(b, format='png')
   data = b.getvalue()

   ip_img = display.Image(data=data, format='png', embed=True)
   return ip_img._repr_png_()


# register display func with PNG formatter:
png_formatter = get_ipython().display_formatter.formatters['image/png']
dpi = png_formatter.for_type(Image.Image, display_pil_image)

在这之后,我可以做:

代码语言:javascript
复制
pil_im

但这必须是单元格中的最后一行,之后没有print

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26649716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档