我使用PIL通过转换较大的图像,以较小的调整大小有图像。 是否有降低图像文件的大小,而不会丢失的质量太大任何标准的方式,可以说图像的原始大小为100KB,我想它弄下来喜欢5或10 KB特别是对PNG和JPEG格式。
Answer 1:
保存的JPEG和PNG图像内置的参数optimize
。
>>> from PIL import Image
# My image is a 200x374 jpeg that is 102kb large
>>> foo = Image.open("path\\to\\image.jpg")
>>> foo.size
(200,374)
# I downsize the image with an ANTIALIAS filter (gives the highest quality)
>>> foo = foo.resize((160,300),Image.ANTIALIAS)
>>> foo.save("path\\to\\save\\image_scaled.jpg",quality=95)
# The saved downsized image size is 24.8kb
>>> foo.save("path\\to\\save\\image_scaled_opt.jpg",optimize=True,quality=95)
# The saved downsized image size is 22.9kb
该optimize
标志将做图像上的额外的传球找到一种方法,以尽可能减小其大小。 1.9kb看起来可能不是很多,但在数百/数以千计的照片,它可以积少成多。
现在,试图得到它归结为5KB〜10 KB,您可以更改保存选项的质量值。 在此例中使用的85,而不是95质量将产生:未优化:15.1kb优化:使用14.3kb的75质量(默认如果参数被排除在外)将产生:未优化:11.8kb优化:11.2kb
我更喜欢85品质与优化,因为质量没有太大的影响,并且文件大小要小得多。
Answer 2:
可以说你有一个叫做书并在其上的字段名为“cover_pic”的模式,在这种情况下,您可以执行以下操作来压缩图像:
from PIL import Image
b = Book.objects.get(title='Into the wild')
image = Image.open(b.cover_pic.path)
image.save(b.image.path,quality=20,optimize=True)
希望它能帮助任何人绊倒在其上。
Answer 3:
查看缩略图 PIL的影像模块的功能。 你可以用它来保存较小版本的文件作为各种文件类型的,如果你想保存尽可能多的质量,你可以,请考虑使用ANTIALIAS
当你这样做的过滤器。
除此之外,我不知道是否有指定的最大期望大小的方式。 你可以,当然,编写可以尝试在不同的特质,直到一定的规模得到满足,放弃休息,给你你想要的图像保存文件的多个版本的功能。
文章来源: How to reduce the image file size using PIL