我正在使用PIL旋转一些图像,并且我注意到输出文件要小得多,所以我尝试了一个测试:对文件不做任何操作,只保存exif信息(因为我知道默认情况下PIL图像会不保存exif信息)。这是我的测试代码:
from PIL import Image
test = Image.open('my_image_file.jpg')
holdexif = test.info["exif"]
test.save('my_saved_image_file.jpg',"jpeg",exif=holdexif)
执行上述操作时,my_saved_image_file.jpg
比原始441 KB
(my_image_file
)小得多(1.83 MB
)。 为什么?缺少什么?
当我查看两个文件的各种属性时,它们似乎是相同的。两者均为56英寸x 27英寸,均为每英寸72像素,均为4032 x 1960像素。 对于图像文件,我绝不是专家。根据我检查过的这些内容(图像的大小,分辨率和外观),这些文件在我看来是相同的。据我了解/了解,只有磁盘上的文件大小不同。我还要看什么?还有什么不同?
我还尝试了保存过程中的quality=
kwarg:
test.save('my_saved_image_file.jpg',"jpeg",exif=holdexif,quality=95)
给了我一个文件(1.73 MB
),几乎和原始文件(1.83 MB
)一样大。但是我不知道占较大尺寸的区别是什么(我不明白是什么使“质量”更好;图像对我来说看起来是一样的)。我试图了解两个文件之间的确切区别,以便做出决定。也许较小的尺寸对于我的目的来说是完全可以的。
答案 0 :(得分:2)
正如Charanjit所指出的,答案在于压缩的数量(由quality
方法的.save()
kwarg控制)。更多的压缩意味着更小的文件和更少的“质量”。
关于“质量”,这意味着,尽管图像尺寸和图像分辨率可能相同,但图像中物体边缘的清晰度和颜色差异会降低(可能对眼睛不明显)。
这里对jpeg压缩有很好的讨论:Understanding JPEG Quality。
还有另一个stackoverflow答案,该问题通过设置kwarg quality='keep'
(而不是quality=N
来解决尝试保存与原始质量相同的jpeg文件的问题:{ {1}}是1到100%之间的整数。