彻底关闭 WordPress 对图片的768、1536、scaled压缩与裁剪

网站APP 3 天前 回复

, ,

WordPress 是一款功能强大的内容管理系统,但它在图片处理方面默认会执行自动压缩和裁剪。如果你想保留上传图片的原始质量和尺寸,不想被 WordPress 擅自处理,那么本文就是为你准备的。

一、WordPress 默认图片压缩机制说明

从 WordPress 4.5 起,系统会对所有上传的 JPEG 图片自动执行压缩,默认压缩质量为 82%。此外,在上传图片时,WordPress 还会自动生成多个不同尺寸的图片(如缩略图、中等、大图等),以供不同设备调用。

虽然这项机制优化了页面加载速度,但可能会导致图片模糊、颜色不准确或细节缺失。

二、禁止 JPEG 图片压缩

将以下代码添加到主题的 functions.php 文件中,能关闭 WordPress 对 JPEG 图像的压缩处理:

add_filter('jpeg_quality', function($arg){ return 100; });

实测通过方法 移除所有尺寸的

add_filter('intermediate_image_sizes_advanced', '__return_false' ); //移除图片裁切
add_filter('big_image_size_threshold', '__return_false' ); //移除 scaled 裁切

这段代码将 JPEG 的压缩比率设为 100%,也就是不压缩。

针对 WordPress 5.8 及以后版本,还需加上这段代码一起使用:

add_filter('wp_editor_set_quality', function($quality) {
    return 100;
});

这样可以覆盖编辑器在图片裁剪、旋转、缩放时的压缩处理。

三、关闭图片裁剪及自动生成多个尺寸

默认情况下,每次上传图片,WordPress 会自动生成多种尺寸(例如 150×150、300×300、768x…等)。为避免系统在后台批量创建无用的图片,可禁用这些设置。

方法一:禁用默认尺寸
在 functions.php 文件中添加以下代码:

function disable_default_image_sizes( $sizes) {
    unset( $sizes['thumbnail']);
    unset( $sizes['medium']);
    unset( $sizes['large']);
    unset( $sizes['medium_large']);
    unset( $sizes['1536x1536']);
    unset( $sizes['2048x2048']);
    return $sizes;
}

add_filter('intermediate_image_sizes_advanced', 'disable_default_image_sizes');

方法二:移除主题或插件自定义尺寸
部分主题或插件可能会注册额外图像尺寸。使用下列代码可批量移除:

function remove_custom_image_sizes() {
    foreach ( get_intermediate_image_sizes() as $size ) {
        remove_image_size($size);
    }
}
add_action('init', 'remove_custom_image_sizes', 100);

四、设置中禁用图像尺寸
进入后台 > 设置 > 媒体,将“缩略图尺寸”、“中等尺寸”、“大尺寸”全部设置为 0。

这仅影响 WordPress 核心默认生成的图像尺寸,对主题或插件无效,因此建议与代码搭配使用。

五、关闭缩略图正方形裁剪
WordPress 会默认将缩略图裁剪为正方形。若想保留原始宽高比例,可添加以下代码:

update_option('thumbnail_crop', 0);

也可以在后台媒体设置中取消“裁剪缩略图使其正方形”选项。

六、可选插件推荐
不熟悉代码的用户可借助以下插件实现相同目的:

Disable Image Sizes:一键禁用 WordPress 和主题注册的图像尺寸
Stop Generating Unnecessary Thumbnails:阻止 WordPress 在上传时生成多余图片
Imsanity:限制上传图片的最大尺寸,防止占用大量空间

原文参考:https://www.361sale.com/56702

支付宝打赏微信打赏

如果此文对你有帮助,欢迎打赏作者。


Deprecated: str_contains(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home/wwwroot/hilau.com/wp-includes/comment-template.php on line 2687

发表评论

欢迎回来 (打开)

(必填)