为生成的缩略图设置自定义名称

时间:2012-05-11 作者:Sean Lee

是否有任何过滤器可用于设置自动生成缩略图的命名约定?

类似这样:

缩略图150x150。jpg->缩略图-s.jpg

  • 缩略图\\u 300x300。jpg->缩略图-m.jpg
  • 缩略图\\u 600x600。jpg->缩略图-l.jpg

  • 2 个回复
    最合适的回答,由SO网友:brasofilo 整理而成

    答案似乎是no...

    我遵循了核心函数,发现了一条死胡同。并找到此帖子(How can I make add_image_size() crop from the top? ) 哪里Rarst 表示:

    中间图像生成非常严格。Image\\u resize()使其接近代码,并且完全没有挂钩。

    But, 按照另一个答案(来自bradt) 他发布的代码(Image Crop Position in WordPress ), 我想我明白了:)

    在函数中bt_generate_attachment_metadata, 我刚把电话改成bt_image_make_intermediate_size 包括最后一个参数$size

    $resized = bt_image_make_intermediate_size( $file, $size_data[\'width\'], $size_data[\'height\'], $size_data[\'crop\'], $size );
    
    并修改了函数的begginingbt_image_make_intermediate_size 具体如下:

    添加了$size 函数的参数,而不是默认值null 值到$suffix, A.switch 到我们的新后缀

    function bt_image_make_intermediate_size( $file, $width, $height, $crop = false, $size ) {
        if ( $width || $height ) {
            switch($size) {
                case \'thumbnail\':
                    $suffix = \'t\';
                    break;
                case \'medium\':
                    $suffix = \'m\';
                    break;
                case \'large\':
                    $suffix = \'l\';
                    break;
                default:
                    $suffix = null;
                    break;
            }
            $resized_file = bt_image_resize( $file, $width, $height, $crop, $suffix, null, 90 );
    
    <罢工>Here ,我的mods完整代码的副本,仅供参考
    diff from the original.

    【2021年】
    我查看了修复以下警告的代码,(h/t@meek2100):两个WP函数被弃用,并且有一个关于命名参数的PHP 8通知
    Gist 带有代码注释的更改。

    SO网友:Víctor

    你可以用过滤器image_make_intermediate_size, 但是,您必须根据获得的$filename来确定要将中间文件更改为什么名称(然后重命名该文件,因为此时该文件已经生成)。

    我只为“缩略图”生成一个中等大小的图像,因此非常简单:

    add_filter( \'image_make_intermediate_size\', function( $filename ) {
    
        // old 2017_234783843-100x100.jpg
        $old = $filename;
        // new 2017_234783843-thumbnail.jpg
        $new = preg_replace("/(\\d+_\\d+)-\\d+x\\d+\\.(.*)/i", "$1-thumbnail.$2", $old );
    
        rename($old, $new);
    
        return $new;
    } );
    

    结束

    相关推荐

    Double thumbnails?

    是否可以使用缩略图机制两次?我发现缩略图API非常有用,它允许用户在其中放置自己的图形,以便我可以轻松控制大小和位置。他们所要做的就是记住点击特色图片。我想在我的页面上有两个这样的机制,你知道我该怎么做吗?最好是手工编码。