Python图像分辨率不变,压缩图像到固定大小

编程入门 行业动态 更新时间:2024-10-14 12:26:20

Python<a href=https://www.elefans.com/category/jswz/34/1771430.html style=图像分辨率不变,压缩图像到固定大小"/>

Python图像分辨率不变,压缩图像到固定大小

压缩图像

使用 Python压缩图像到固定大小,并保证分辨率不变
关键点:
使用 PIL 库,通过save函数调整图像质量,达到降低存储大小目的。
img.save(output_name, quality=quality)

  • quality参数: 保存图像的质量,值的范围从1(最差)到95(最佳)。 默认值为75,使用中应尽量避免高于95的值; 100会禁用部分JPEG压缩算法,并导致大文件图像质量几乎没有任何增益。
  • subsampling参数:子采样,通过实现色度信息的分辨率低于亮度信息来对图像进行编码的实践。 (参考:https://en.wikipedia/wiki/Chroma_subsampling)
    可能的子采样值是0,1和2,对应于4:4:4,4:2:2和4:1:1(或4:2:0?)。经过实践将值设为0便可以满足图片大小增大的需求。

函数说明:
以下方法的参数只针对于保存为JPG/JPEG格式的图片的情况。

from PIL import Image
import osdef get_size(filename):# Obtain the file size: KBsize = os.path.getsize(filename)return size / 1024def compress_image(img_path, out_path, mb=50, step=5, quality=100):"""不改变图片尺寸压缩图像大小:param img_path: 压缩图像读取地址:param out_path: 压缩图像存储地址:param mb: 压缩目标,KB:param step: 每次调整的压缩比率:param quality: 初始压缩比率:return: 压缩文件地址,压缩文件大小"""o_size = get_size(img_path)if o_size < mb:return Image.open(img_path)img = Image.open(img_path)while o_size > mb:img = Image.open(img_path)img = img.convert('RGB')img.save(out_path, quality=quality)if quality - step < 0:breakquality -= stepo_size = get_size(out_path)print('File size: ' + str(o_size))return imgif __name__ == '__main__':print("Compress image ...")img_path = 'test.png'out_path = 're.jpg' # 必须是 jpeg 类型img = compress_image(img_path, out_path)img.save('re2.jpg', quality=95) # 使用quality=95保证图像大小经过存储后不变print("Compress success!")

更多推荐

Python图像分辨率不变,压缩图像到固定大小

本文发布于:2024-02-12 11:55:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1687692.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图像   分辨率   大小   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!