为什么WordPress生成的缩略图比3个标准尺寸多?

时间:2020-07-10 作者:Antonino Lattene

如果我在Wordpress中上传图像,它通常会生成比我在设置中指示的更多的图像大小->;介质(小型150、中型300、大型1024)。

例如,如果我上传一个4K图像,它最多会生成7个副本+原始副本(150、300、768、1024、1536、20148,缩放,原始)。

我使用的是基于下划线的子主题,但似乎没有文件函数告诉Wordpress生成其他副本。

他们来自哪里?

1 个回复
SO网友:Sally CJ

WordPress会生成3个以上的缩略图或图像子大小,因为WordPress中实际有3个以上的标准/核心图像大小。此外,主题和插件还可以注册自定义图像大小。:)

6+1标准/核心图像大小默认值(4):Thumbnail, Medium, Large and Medium Large (medium_large), 但只有前三个可以在wp-admin → 设置→ 媒体。

默认附加/自定义尺寸(2):1536x1536 and 2048x2048 通过内部/自动添加_wp_add_additional_image_sizes() 其中使用add_image_size().

缩放(-scaled 在图像文件名中:可用于高分辨率和非PNG图像,其中WordPress复制原始(大)图像并将其缩小到阈值大小,默认为2560像素。

例如,如果我上传一幅4K图像,它最多会再生成7个副本+原始副本(150、300、768、1024、1536、20148,缩放,原始)。

因此,在这种情况下(但请注意,我认为您键入了“20148”,应该是2048),原始图像的7个副本很可能是:

150-缩略图300-中等大小768-中等大小1024-大大小1536-核心自定义图像大小(1536x1536)2048x2048)

  • 缩放-核心缩放,如果您想确定,可以使用get_intermediate_image_sizes() 检查站点上所有注册的图像大小。您还可以使用wp_get_additional_image_sizes() 仅获取附加/自定义尺寸(包括1536x15362048x2048 由WordPress添加)。

    事实上,您可以使用wp_get_attachment_metadata() (参见最下方的示例)检查图像附件的可用大小。

    非核心/其他自定义图像大小的主题和插件可以使用相同的大小add_image_size() 注册自定义图像大小,因此如果您注意到比核心图像大小更多的图像大小(参见上文),那么这些额外大小可能是由站点上的活动主题或插件添加的。例如。

    十九种用途set_post_thumbnail_size() 设置custom Featured Image size 你可以在functions.php.

    WooCommerce使用add_image_size() 为产品缩略图注册自定义图像大小(woocommerce_thumbnail) 你可以在includes/class-woocommerce.php.

    因此,对于此类自定义图像大小,您可以在主题或插件文件中搜索添加图像大小或设置后期缩略图大小。

    如何禁止为6个标准/核心尺寸和通过添加的所有其他尺寸生成特定图像尺寸add_image_size(), e、 g。medium_large2048x2048, 您可以使用intermediate_image_sizes_advanced hook:

    add_filter( \'intermediate_image_sizes_advanced\', function ( $sizes ) {
        // Disable the 2048x2048 size.
        unset( $sizes[\'2048x2048\'] );
    
        // Or maybe allow specific sizes only:
        /*
        $allowed = [ \'thumbnail\', \'medium\', \'large\' ];
        foreach ( $sizes as $name => $size ) {
            if ( ! in_array( $name, $allowed ) ) {
                unset( $sizes[ $name ] );
            }
        }
        */
    
        return $sizes;
    } );
    
    big_image_size_threshold hook:

    // Disable the threshold.
    add_filter( \'big_image_size_threshold\', \'__return_false\' );
    
    // Or maybe increase it:
    /*
    add_filter( \'big_image_size_threshold\', function () {
        return 3032;
    } );
    */
    

    核心规模和wp_get_attachment_metadata()

    (我在之前的修订中提到了这一点,所以我认为应该在这里包括它。)

    对于具有核心缩放图像的图像附件,主width, heightfile 如下所示,项目将指向缩放后的图像,而不是原始图像。但是,原始文件的名称在中可用original_image.

    // Query an attachment with a core Scaled image.
    var_dump( wp_get_attachment_metadata( 123 ) );
    /* Sample output:
    array(6) {
      ["width"]=>
      int(2560)
      ["height"]=>
      int(1440)
      ["file"]=>
      string(25) "2020/07/hi-res-scaled.jpg"
      ["sizes"]=>
      array(7) {
        ["medium"]=>
        array(4) {
          ["file"]=>
          string(18) "hi-res-300x169.jpg"
          ["width"]=>
          int(300)
          ["height"]=>
          int(169)
          ["mime-type"]=>
          string(10) "image/jpeg"
        }
        ["large"]=>
        ...
        ["thumbnail"]=>
        ...
        ["medium_large"]=>
        ...
        ["1536x1536"]=>
        ...
        ["2048x2048"]=>
        ...
      }
      ["image_meta"]=>
      array(12) {
        ...
      }
      ["original_image"]=>
      string(10) "hi-res.jpg"
    }
    */
    
    // Query an attachment without a core Scaled image.
    var_dump( wp_get_attachment_metadata( 456 ) );
    /* Sample output: (no original_image)
    array(5) {
      ["width"]=>
      int(1024)
      ["height"]=>
      int(768)
      ["file"]=>
      string(21) "2020/07/foo-image.jpg"
      ["sizes"]=>
      array(3) {
        ["medium"]=>
        array(4) {
          ["file"]=>
          string(21) "foo-image-300x225.jpg"
          ["width"]=>
          int(300)
          ["height"]=>
          int(225)
          ["mime-type"]=>
          string(10) "image/jpeg"
        }
        ["thumbnail"]=>
        ...
        ["medium_large"]=>
        ...
      }
      ["image_meta"]=>
      array(12) {
        ...
      }
    }
    */
    

  • 相关推荐

    WP Large Images crash page

    我遇到了一个问题,照片库中最宽的一面有多个7MB、4000px的图像,导致wordpress页面崩溃,或者页面变得没有响应。我使用smush调整图像大小。除了较小的图像,还有其他想法吗?还是更少的图像?