开发目的我经常用到图片。公众号无论是发文章,还是使用生活中的素材,都无所谓。图片是比文字更直观的载体。不过图片比较占带宽,很多软件对图片都有大小限制。图片太大也会影响加载速度。试过好几个图片压缩工具,tinypng、tinyjpg都很好用,体验也很好。但它有几个限制:1、每次不能超过20张图片,因为tinypng是网站,一次上传太多势必会影响速度和服务器压力;2.不能控制压缩比,compressjpeg.com做的很好,可以控制每张图片。3.我写文章的时候用markdown比较多,所以希望边压缩边上传到图床。所以希望自己能做一个简单好用的图片工具,顺便定制一些自己常用的功能。初步想法我的初步想法是这样的:1.先通过命令行使用很方便,有需要再写界面。picomimagename.jpg该命令可以智能压缩图像。格式为原格式,生成的新图片名称为图片名_picom.jpg2,指定新文件名picomname.jpg-onew_name.png图片的格式也会根据新文件名改变3,只指定格式picomname.jpg--formatpng图像被指定为新的格式,但文件名仍然是默认的。4.Cropsizepicomname.jpg--sizenormal将图片裁剪成正常大小,可以设置几个常用的。5、crop并指定具体尺寸picomname.jpg--size920*5206,上传到图片床picomname。jpg--upload上传到图床后,返回图床地址。我还在琢磨怎么把图床的地址保存下来。可能涉及到的知识和库点击命令行工具subprocess子进程管理工具pillow库使用pngquant(png图片有损压缩)mozjpegoptipng(png无损压缩)python如何调用c代码requests库和aiohttp/aiofile库的使用尝试使用pillow库进行图片压缩Pillow是python处理图片的一个非常强大的库,具有图片压缩的功能。我尝试过使用pillow的以下API来压缩图片,但是效果不是很好。save(quality=50)save(optimize=True)quantize()convert("RGB")1、质量参数save方法中的质量参数只适用于jpg格式,通常80左右的质量不会有明显的感觉.对png格式无效,但不报错。2.optimize参数optimize参数直接压缩效果不明显。3、quantize方法quantize是主要使用的压缩优化函数,在png格式压缩中可以减少70%左右的空间,但是色差比较明显。这是压缩后的效果对比:4.convert方法将png的RGBA格式转为RGB格式,可以减少20%左右的体积,画面效果并没有明显减弱,只是尺寸迅速缩小。结论Pillow目前不适合做PNG图片压缩处理,可以使用jpg作为替代。pillow的主要应用场景可以用于灰度转换和尺寸控制。这些功能将在核心压缩问题解决后添加。参考资料tinypng、pngquant和pillow压缩图片Crunchcompression想象一下:一个使用pngquant和mozjpeg的工具optipng:一个无损压缩库,可以将pillow的大小减少一半左右参考教程
