WordPress修改上传JPEG图片压缩质量的代码钩子jpeg_quality

可能很多人没有留意到,一直以来WordPress默认会压缩上传的JPEG格式(如.jpeg、.jpg)的图片质量,在WordPress 4.5版本以前会把图片质量压缩到90%,WordPress 4.5版本之后则压缩到82%,这样做的目的是为了减少图片大小,优化加载速度。

但并不是每个人都希望上传的图片被压缩,因为压缩质量意为着上传的图片会模糊或失真,当然也会有人觉得图片质量压缩得不够低,想压缩得更小一些。可能WordPress官方也考虑到这些情况,所以也提供了修改压缩图片质量的钩子jpeg_quality,让用户自己掌握压缩的力度。

介绍钩子

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文件:

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/