这个问题我发现很久了,不知各位发现没有,就是在wc上传图片附件时,产生的缩略图,在程序中有一个quality参数,可以设置压缩品质,这个数字(百分比)越高,质量越好,文件容量也越大。有时候为了节省存储空间,我们也许可以调整这个参数,来获取一个平衡的图片品质和文件容量。
可是,我发现,似乎无论怎么改变这个quality参数,出来的图片品质都是一样的,文件尺寸也是一样的。
所以,我查了查代码,也翻了翻PHP手册,找到问题了。
请看,在/core/image.php这个位置,红框的是原来的代码,下面灰色注释的是我改的代码。
如果使用原来的代码,那么图片压缩品质无效。而使用我改的代码,则有效。
原因是什么呢?看PHP手册:
原来,setCompressionQuality这个函数仅对新创建文件有效,而对于已存在文件(上传图片属于已存在文件)则无效。对于后者,应该使用 set
ImageCompressionQuality()这个函数(名字中多了Image)
我不清楚这个问题的产生,是与我使用的PHP图像处理插件有关,还是PHP版本有关(我用的是PHP7.3)。所以不确定这是不是BUG,但确实解决了我的问题。
给各位同学以及WC官方参考。
————————————————————————————————————
这里附上压缩效果对比图。
【这是原版代码,quality(默认=80)参数失效情况下的缩略图,文件尺寸是
202KB】
【这是修正了代码之后的缩略图,文件尺寸是
60KB(我设置了quality = 60)】
可以看出,文件尺寸大幅减小了,但图片视觉效果其实差不太多,对于一般网络社区而言,足够了。
==========================================
?另外,再给WC官方提一个建议,在管理后台加一个图片压缩品质的功能,允许站长设置整站的图片压缩品质。
阅读全文
收起全文