当前位置: 首页 > 面试题库 >

如何使用PIL保存图像?

郎建章
2023-03-14
问题内容

我刚刚使用Python图像库(PIL)进行了一些图像处理,这是我之前发现的用于执行图像的傅立叶变换的文章,但是我无法使用save函数。整个代码运行良好,但不会保存生成的图像:

from PIL import Image
import numpy as np

i = Image.open("C:/Users/User/Desktop/mesh.bmp")
i = i.convert("L")
a = np.asarray(i)
b = np.abs(np.fft.rfft2(a))
j = Image.fromarray(b)
j.save("C:/Users/User/Desktop/mesh_trans",".bmp")

我得到的错误如下:

save_handler = SAVE[string.upper(format)] # unknown format
    KeyError: '.BMP'

如何使用Pythons PIL保存图像?


问题答案:

已解决有关文件扩展名的错误,您可以使用BMP(不带点)或将输出名称与扩展名一起传递。现在要处理该错误,您需要在频域中适当地修改数据以将其保存为整数图像,PIL这告诉您它不接受将浮点数据保存为BMP。

这是进行转换以实现正确可视化的建议(还有其他一些小的修改,例如使用fftshiftnumpy.array代替numpy.asarray):

import sys
import numpy
from PIL import Image

img = Image.open(sys.argv[1]).convert('L')

im = numpy.array(img)
fft_mag = numpy.abs(numpy.fft.fftshift(numpy.fft.fft2(im)))

visual = numpy.log(fft_mag)
visual = (visual - visual.min()) / (visual.max() - visual.min())

result = Image.fromarray((visual * 255).astype(numpy.uint8))
result.save('out.bmp')


 类似资料:
  • 更新: 我得到以下错误: ...newimg1.save(“img1.png”)文件“C:\python27\lib\site-packages\pil\image.py”,第1439行,在save save_handler(self,fp,filename)文件“C:\python27\lib\site-packages\pil\pngimageplugin.py”中,第572行,在_save

  • 问题内容: 我正在使用python和图像模块(PIL)处理图像。 我想将图像对象的原始位流存储到redis,以便其他人可以使用nginx和httpredis直接从redis读取图像。 因此,我的问题是如何获取Image对象的原始位并将其存储到Redis中。 问题答案: 使用PIL 1.1.7,redis-2.7.2 pip模块和redis-2.4.10,我可以使它工作: 我发现这是不可靠的,因此此

  • 问题内容: 我有一个原始图像,其中每个像素对应一个16位无符号整数。我正在尝试使用PIL Image.fromstring()函数进行读取,如以下代码所示: PIL文档通知fromstring()函数的第一个参数为’mode’。但是,在查阅文档并进行谷歌搜索时,我无法找到有关该参数真正含义的详细信息(我相信它与色彩空间或类似的东西有关)。有谁知道我在哪里可以找到有关fromstring()函数以及

  • 本文向大家介绍python使用PIL缩放网络图片并保存的方法,包括了python使用PIL缩放网络图片并保存的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python使用PIL缩放网络图片并保存的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 问题内容: 如何使用PIL或任何其他Python库获取图片边的大小? 问题答案: 根据文档。

  • 问题内容: 有什么明显的方法可以实现我所缺少的吗?我只是想制作缩略图。 问题答案: 定义最大尺寸。然后,通过计算调整大小比例。 适当大小。 当然,还有一个库方法可以做到这一点:。 以下是PIL文档中的一个(经过编辑的)示例。