折腾:
【未解决】Python中实现二进制数据的图片的压缩
期间,已经可以压缩了。但是要找到合适的压缩比例和尺寸。
去调试看看,哪种压缩尺寸,压缩出来的性价比高,适合此处移动端显示
用:
![](https://www.crifan.com/files/pic/uploads/2021/03/022368a2c9704a6382a9cf40694ab15e.jpg)
最后输出:
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)
从原始图片:
![](https://www.crifan.com/files/pic/uploads/2021/03/ceb8e9d34862472ea2a345daa8471522.jpg)
压缩到:
![](https://www.crifan.com/files/pic/uploads/2021/03/3e02f42f49f54233abb6ec1f76e1f843.jpg)
所以是压缩了,但是图片质量不够清楚了
->去把压缩尺寸放大一点
# IMAGE_COMPRESS_SIZE = (250, 250) IMAGE_COMPRESS_SIZE = (500, 500)
结果效果中等:
![](https://www.crifan.com/files/pic/uploads/2021/03/3a9183a236cc4ab48e9c1882c384fbd5.jpg)
还是不错的。
再去试试800×800
![](https://www.crifan.com/files/pic/uploads/2021/03/6cda088b33ac4fffbe73f3617de96927.jpg)
- 3543 × 3543: 427KB,原图,质量高,就是太大了
- 250 × 250:18KB,有点不够清楚
- 500 × 500:45KB,质量中上等,可以接受,还算清晰的
- 800×800:82KB,质量上等,更加清晰,和原图差异很小
那就再去测试测试 jpg图片看看效果
![](https://www.crifan.com/files/pic/uploads/2021/03/1e973c1e171e4538b9913cf74a6f646f.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"
结果就可以了。
去比较了原图
![](https://www.crifan.com/files/pic/uploads/2021/03/8801f45fca7e446781f3a3beeacd04f5.jpg)
和压缩后的
![](https://www.crifan.com/files/pic/uploads/2021/03/5e4f7708b3234689b9614044b5e779bd.jpg)
基本没有区别,除了原图更加精细一些。
- 500×900 110KB 原图,精细些
- 444×800 48KB 画质基本看不出区别了,很好
再去找个原图很大的,上M的图片
![](https://www.crifan.com/files/pic/uploads/2021/03/43da11c5d123468491b2d7c764a5b551.jpg)
![](https://www.crifan.com/files/pic/uploads/2021/03/298d6461c78e48ab8f6b02a1dcc3f515.jpg)
觉得500多KB,还是太大了,所以再去压缩了 600×600的
![](https://www.crifan.com/files/pic/uploads/2021/03/911d75e7dbc340638c049c57543cbfa7.jpg)
【总结】
总体上,此处600×600的图片,已经足够满足压缩后,画质保持很好,降低的很少,这样放到手机端,足够足够清晰了。
对应压缩比,大概是:
307KB/ (1.3MB * 1024KB/M) = 23%
转载请注明:在路上 » 【已解决】调试Pillow找到合适的性价比高的图片压缩尺寸