最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】调试Pillow找到合适的性价比高的图片压缩尺寸

图片 crifan 826浏览 0评论
折腾:
【未解决】Python中实现二进制数据的图片的压缩
期间,已经可以压缩了。但是要找到合适的压缩比例和尺寸。
去调试看看,哪种压缩尺寸,压缩出来的性价比高,适合此处移动端显示
用:
最后输出:
lengthInMB=0.41 MB
len(fileBytes)=427306
imageFile=<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=3543x3543 at 0x1048DAF28>
imageFile.size=(3543, 3543)
imageFile=<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=250x250 at 0x1048DAF28>
imageOutput=<_io.BytesIO object at 0x10373c518>
imageSuffix=png
imageFormat=PNG
imageFile=<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=250x250 at 0x1048DAF28>
imageFile.size=(250, 250)
compressedImageBytes=b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\xfa\。。。
len(compressedImageBytes)=17965
可见:
从410多KB 的(3543, 3543),压缩到17KB的(250, 250)
http://127.0.0.1:34800/image/5c1c6322127588257d56935e/vedio%20game.png
从原始图片:
压缩到:
所以是压缩了,但是图片质量不够清楚了
->去把压缩尺寸放大一点
# IMAGE_COMPRESS_SIZE = (250, 250)
IMAGE_COMPRESS_SIZE = (500, 500)
结果效果中等:
还是不错的。
再去试试800×800
  • 3543 × 3543: 427KB,原图,质量高,就是太大了
  • 250 × 250:18KB,有点不够清楚
  • 500 × 500:45KB,质量中上等,可以接受,还算清晰的
  • 800×800:82KB,质量上等,更加清晰,和原图差异很小
那就再去测试测试 jpg图片看看效果
http://127.0.0.1:34800/image/5c1c6321127588257d569333/draw%20on%20the%20paper.jpg
 果然不支持JPG:
imageFile.save(imageOutput, imageFormat)
File "/Users/crifan/.local/share/virtualenvs/EvaluationSystemServer-6RbmF4Wj/lib/python3.6/site-packages/PIL/Image.py", line 1958, in save

save_handler = SAVE[format.upper()]
KeyError: 'JPG'
去换成JPEG:
imageFormat = imageSuffix.upper() # PNG
if imageFormat == "JPG":
    imageFormat = "JPEG"
结果就可以了。
去比较了原图
和压缩后的
基本没有区别,除了原图更加精细一些。
  • 500×900 110KB 原图,精细些
  • 444×800 48KB 画质基本看不出区别了,很好
再去找个原图很大的,上M的图片
http://127.0.0.1:34800/image/5c1c6322127588257d56940b/help.png
觉得500多KB,还是太大了,所以再去压缩了 600×600的
【总结】
总体上,此处600×600的图片,已经足够满足压缩后,画质保持很好,降低的很少,这样放到手机端,足够足够清晰了。
对应压缩比,大概是:
307KB/ (1.3MB * 1024KB/M) = 23%

转载请注明:在路上 » 【已解决】调试Pillow找到合适的性价比高的图片压缩尺寸

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
80 queries in 0.172 seconds, using 22.11MB memory