Python 图像库:调整大小时的图像分辨率

6

我正在尝试使用Python图像库将一些24X36英寸的JPEG图像缩小到11X16.5英寸。由于PIL处理像素,这应该意味着从7200X4800像素缩放到3300X2200像素,我的分辨率设置为每英寸200个像素。然而,当我运行脚本时,PIL会将分辨率更改为每英寸72个像素,结果我的图像比之前还要大。

import Image

im = Image.open("image.jpg")

if im.size == (7200, 4800):
    out = im.resize((3300,2200), Image.ANTIALIAS)
elif im.size == (4800,7200):
    out = im.resize((2200,3300), Image.ANTIALIAS)

out.show()

当我调整图片大小的时候,有没有办法保持我的图像分辨率?

谢谢任何帮助!


你可能想尝试缩略图功能。 - Ionut Hulub
1个回答

8
为了保留 DPI,您需要在保存时指定它;info 属性并不总是在图像处理过程中得到保留。
dpi = im.info['dpi']  # Warning, throws KeyError if no DPI was set to begin with

# resize, etc.

out.save("out.jpg", dpi=dpi)

一些图像文件格式,例如 .jpg,没有 dpi 值,因此我怀疑上述代码不会产生任何影响(并且第一行也会导致“keyerror”)。 - martineau
@martineau:OP在示例代码中使用了jpg文件,而对于许多其他格式,dpi信息并没有太多意义。 - Martijn Pieters
@user1492267:由于我预计 im.info['dpi'] 会给你一个 KeyError,那么这个是如何工作的呢? - martineau
@MartijnPieters:明确一下,每当我尝试在从.jpg文件读取的图像上执行dpi = im.info ['dpi']时,我都会收到一个KeyError - martineau
@user1492267(和Martijn):我从进一步阅读中了解到,JPEG文件格式已经发展,现在可以选择包含水平和垂直dpi元数据 - 因此用于创建您的图像的应用程序显然将其放入您的文件中。请原谅我在这方面的错误陈述。要向读取但没有dpi信息的图像添加dpi信息,可以使用类似out.save(fout_name, dpi =(200,200))的东西明确设置 - 请注意,实际上是一对值,分别为水平和垂直。 - martineau
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接