【CV】PIL.Image.save() 保存图片压缩问题

1. 出现的问题:

在Pillow中的PIL.Image.save()方法中,使用默认参数保存jpg图片的过程中发现图片被压缩的很严重,导致原来很大的图片变成几十KB。但是有些时候往往需要图片的大小不能变化太大或不能太小。

2. 问题原因:

这是因为在保存为jpg的过程中,PIL.Image.save()方法内部使用压缩算法对图片进行的压缩处理。

3. 解决方法

在保存的时候,加上一些参数。

form PIL import Image
img = Image.open("xxx.jpg")
img.save(img_name, quality=95)

quality参数: 保存图像的质量,值的范围从1(最差)到95(最佳)。 默认值为75,使用中应尽量避免高于95的值; 100会禁用部分JPEG压缩算法,并导致大文件图像质量几乎没有任何增益。

使用此参数后,图片大小会增加。如果图片的大小还不能满足你的需求,是否还有其他方式去增加图片大小呢?

通过查阅资料并尝试,发现save方法还有一个可以配合quality使用的参数,能够大大增加图片大小:

img.save(new_name, quality=95, subsampling=0) # 可能的子采样值是0,1和2

subsampling参数:子采样,通过实现色度信息的分辨率低于亮度信息来对图像进行编码的实践。

注意: 以上方法的参数只针对于保存为JPG/JPEG格式的图片的情况,在项目实践过程中,楼主只使用了quality参数就满足了要求,后面的subsampling参数未使用。以上仅供参考。

参考

https://blog.youkuaiyun.com/weixin_41935140/article/details/83308359

这个错误是由于PIL库中的Image模块没有convert属性导致的。根据引用中的方案一,你可以尝试修改`_init_.py`文件中的代码,将`Image.ANTIALIAS`替换为`Image.LANCZOS`,即将`image.resize((int(image.size * (64 / image.size * (64 / image.size中提到,你还可以使用PIL模块中的`.fromarray()`函数将numpy数组转换为图片保存。具体代码可以参考这个引用中给出的示例。如果你需要处理彩色图像,可以使用`.fromarray((image_array*255).astype('uint8'), mode='L').convert('RGB').save(filename)`来进行处理。最后,根据引用中给出的代码,你可以检查一下你的PIL库和cv2库的安装和导入情况,确保正确导入这两个库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS](https://blog.csdn.net/light2081/article/details/131517132)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [完美解决AttributeError: module ‘scipy.misc‘ has no attribute ‘toimage‘报错问题](https://blog.csdn.net/qq_41240287/article/details/120320612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [np.ndarray与PIL.Image对象相互转换时出现了 AttributeError: type object ‘Image‘ has no attribute ...](https://blog.csdn.net/tp_0moyi0/article/details/121065904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器不学习我学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值