WordPress修改上传JPEG图片压缩质量的代码钩子jpeg_quality
可能很多人没有留意到,一直以来WordPress默认会压缩上传的JPEG格式(如.jpeg、.jpg)的图片质量,在WordPress 4.5版本以前会把图片质量压缩到90%,WordPress 4.5版本之后则压缩到82%,这样做的目的是为了减少图片大小,优化加载速度。
但并不是每个人都希望上传的图片被压缩,因为压缩质量意为着上传的图片会模糊或失真,当然也会有人觉得图片质量压缩得不够低,想压缩得更小一些。可能WordPress官方也考虑到这些情况,所以也提供了修改压缩图片质量的钩子jpeg_quality
,让用户自己掌握压缩的力度。
介绍钩子
1 |
apply_filters( 'jpeg_quality', int $quality, string $context ) |
作用
压缩JPEG格式图片质量以实现向后兼容性,只对正在上传的JPEG格式的图片有效,不支持.png、.gif等非JPEG格式的图片,且已经上传的图片不会再被压缩,另外WP_Image_Editor::set_quality()
方法优先于过滤器。
参数
$quality – (int)JPEG的质量级别介于0(低)和100(高)之间。
$context – (字符串)筛选器的上下文。
示例
把下面的代码放到主题的functions.php文件:
1 2 3 4 |
function my_prefix_regenerate_thumbnail_quality() { return 80;//80就是图片的质量级别 } add_filter( 'jpeg_quality', 'my_prefix_regenerate_thumbnail_quality'); |
函数代码中的80
就是图片要压缩到的质量级别,不想被压缩可修改为100
扩展
JPEG格式不仅仅是指.jpeg
,还有有.jpeg
、.jfif
、.jpg
、.jpe
文件位置:wp-includes/class-wp-image-editor.php
官方文档:https://developer.wordpress.org/reference/hooks/jpeg_quality/