不知道大家有没有看到过别人写的 WordPress 默认会压缩上传的 jpg 格式图片的文章,我搜了下确实是有博主在说,还给出个代码来让WordPress不压缩图片的,如下:
add_filter('jpeg_quality', function($arg){return 100;});但也有博主说根本就不会压缩,究竟如何,还是让我来做个测试看看吧!
首先咱们来准备图,因电脑重装了所以手边只有几张图了,我就随便找两张吧:


注:一张 Miku 一张穹妹的,可惜不知道具体的画师等信息。
上面的两张图的原图我用校验工具得到的信息如下:

现在我先把文章发布出去,然后再下载文章内的图,得到的信息为:

相信大家从上面这两张图里看出来了吧?上传后的图片再下载下来,和原图根本就没有区别,不存在什么压缩了的问题,那代码简直莫名其妙嘛!如果大家不信,可以到自己的博客去试试。
多年后诈尸更新一下!
事实上,WordPress 并不会对上传图片的原图进行处理,真正会有压缩的地方是在生成裁剪尺寸图片的时候(也就是设置“媒体”里那些用于缩略图特色图片之类的裁剪尺寸图片),而不是上传原图的时候。
从博主掌握的信息来说,常见格式的裁剪尺寸图片是否会被压缩总结如下:
- JPG JPEG 家族的会被压缩
- PNG 不会被压缩
- GIF 不会被压缩
- WebP 会被压缩
- AVIF 会被压缩
如果你真的需要对裁剪尺寸生成的图片进行自定义压缩比,可以用下面的代码:
// 自定义图像压缩质量
function custom_image_quality($image_quality, $mime_type) {
// 根据 MIME 类型设置压缩质量
switch ($mime_type) {
case 'image/webp':
return 100; // 自定义的 WebP 压缩质量
case 'image/jpeg':
return 100; // 自定义的 JPEG 压缩质量
// 可以根据需要按照上面的写法继续添加更多格式
case 'image/avif':
return 100; // 自定义的 AVIF 压缩质量
default:
return $image_quality; // 对其他格式保持默认质量
}
}
add_filter('wp_editor_set_quality', 'custom_image_quality', 10, 2);
那么最后这个代码和文章最开始写的代码有什么区别呢?
最后的代码修改的是 wp_editor_set_quality 这个过滤器,而文章开头代码修改的是 jpeg_quality,从名字就可以看出来 jpeg_quality 只适合设置 JPEG 格式图片的压缩比,而 wp_editor_set_quality 适用于所有 WordPress 支持的图片格式,且优先级高于 jpeg_quality。





