如何在Pillow-Python中保存简单图像而不会改变质量?

5
我希望以与原始图像完全相同的质量存储图像,不做任何质量上的变化。在Pillow Python中设置quality=100时,保存的图像比原始图像少了5kB的空间。我该如何保留大小?我正在从流中检索图像。
from PIL import Image, ImageFilter

image = Image.open("image.jpg")
file_path = io.BytesIO();
image.save(file_path,'JPEG',quality=100);
file_path.seek(0);

image2 = Image.open(file_path)


image2.save("image_copy2.jpg",'JPEG');

1
那么,为什么不像平常复制文件一样复制图像呢? - Marcin
你可以谷歌“jpeg降级”来了解为什么这是一个不好的想法,然后考虑Marcin的方法,因为它看起来你没有对其进行任何修改。 - jedwards
1个回答

1

以100%质量保存图像。这仍会使图像与原始图像略有不同,因为它还将使用子抽样来减小图像大小。

img.save('test.jpg', quality=100)

您也可以关闭子采样以确保获得与原始图像完全相同的结果。

img.save('test.jpg', quality=100, subsampling=0)

这是不正确的。如果你想要制作一份完全相同的图像副本,你应该使用 shutil.copyfile。如果你想要制作一个“尽力而为、最接近”的副本,你应该使用 img.save(..., quality='keep') - Mark Setchell
来源 https://jdhao.github.io/2019/07/20/pil_jpeg_image_quality/PIL 中提供了 Image.save() 方法来保存图像,其中可以指定 JPEG 图像的质量。JPEG 图像的质量范围是 0-100,其中 0 表示最差的质量,100 表示最好的质量。在 PIL 中,默认的 JPEG 图像质量为 75。如果你不指定质量参数,则使用默认值。如果你想要更好的质量,可以增加质量参数的值。例如:from PIL import Image img = Image.open("test.jpg") img.save("test_90.jpg", quality=90)上面的代码将原始图像 test.jpg 以质量为 90 的 JPEG 格式保存到 test_90.jpg 文件中。需要注意的是,随着 JPEG 图像质量的提高,图像文件的大小也会相应地增加。因此,在选择 JPEG 图像质量时,需要权衡图像质量和文件大小。 - Ali Sajjad

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