无法用PIL保存图像

2024-04-23 12:00:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以通过以下方式制作图像并将其保存到文件中:

Img1 = PIL.Image.new('RGB', (512,512))
display(newImg1)
Img1.save("img1.jpg","JPEG")

但这张照片救不了人

^{pr2}$

display(imag)可以很好地显示图片,但python认为它不是图像。为什么?在


Tags: 文件图像imagenewpilsavedisplay方式
1条回答
网友
1楼 · 发布于 2024-04-23 12:00:19

这条线索给了我线索: image does not display in ipython

不幸的是'scipy.misc.imsave'现在不推荐使用,我必须使用imageio

但我不能简单地

pip install imageio

它让我对使用sudo和-H标志有点莫名其妙。我做到了这一点,事实上,当我开始使用python时,我可以做到这一点

^{pr2}$

但当我启动jupyter笔记本时,笔记本很蠢,说“没有名为imageio的模块”

所以我试着重新安装,得到了这个

$pip install imageio
Requirement already satisfied: imageio in /usr/local/lib/python3.6/dist-packages (2.5.0)
Requirement already satisfied: pillow in /usr/lib/python3/dist-packages (from imageio) (5.1.0)
Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (from imageio) (1.13.3)

它怎么会出现在Python3目录里?所以我决定试试这个

$python -m pip install imageio  user
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Requirement already satisfied: imageio in ./.local/lib/python2.7/site-packages (2.5.0)
Requirement already satisfied: futures in /usr/local/lib/python2.7/dist-packages (from imageio) (3.2.0)
Requirement already satisfied: numpy in /usr/lib/python2.7/dist-packages (from imageio) (1.13.3)
Requirement already satisfied: enum34 in /usr/lib/python2.7/dist-packages (from imageio) (1.1.6)
Requirement already satisfied: pillow in /usr/local/lib/python2.7/dist-packages (from imageio) (5.4.1)

为什么我要继续使用Python2.7?好吧,因为我有这些相当长的python程序,我不想通过故障排除来让它们在python3中工作。不管怎样,现在当我打开jupyter笔记本时,我可以这样做

import numpy as np
import PIL.Image
import imageio
from IPython.display import clear_output, Image, display

img2 = np.float32(PIL.Image.new('RGB', (256,512)))
imageio.imwrite('test.jpg', img2[:, :, 0])

它将一个合适的jpg保存到磁盘上。但如果我试着这么看的话

display(img2)

显然,我只是得到了纽比阵列。为了显示它,我必须用makePic def转换数组,如下所示:

img2 = np.float32(PIL.Image.new('RGB', (125,512)))
imageio.imwrite('test.jpg', img2[:, :, 0])
#display(img2)
image=makePic(img2)
display(image)

有趣的是图像IO.imwritecall只是将numpy数组写入磁盘,但是当我在ubuntu中打开该文件时,显然,图像查看器会进行numpy数组到图像的转换。在

相关问题 更多 >