【问题标题】:Upsizing Wordpress featured image thumbnail / Always convert GIF to JPG升迁 Wordpress 特色图片缩略图 / 始终将 GIF 转换为 JPG
【发布时间】:2013-04-17 03:13:23
【问题描述】:

这个有点两部分,因为任何一个都可以解决我的问题。

upsizing特色图像当所选图像小于指定的缩略图大小

如果上传的文件小于设置的最小缩略图尺寸 - 例如缩略图尺寸为 150x150 的 100x100 图像,Wordpress 不会强制放大。除了使用 Imagemagick 之类的外部资源之外,还有什么方法可以强制升迁?

在每个实例中将上传的 GIF 转换为 JPG

强制升迁的另一种方法是为任何上传的 GIF 文件创建一个 JPG 替代文件。目前,大于缩略图大小的 GIF(例如 200x200 的 GIF,当缩略图大小为 150x150 时)会自动生成静态 JPG 缩略图。

我正在以编程方式生成缩略图:

// Inserts metadata and creates thumbnails for uploaded file
$attach_id = wp_insert_attachment($attachmentMeta, $newFile, $post_id);
$attach_data = wp_generate_attachment_metadata($attach_id, $newFile);
wp_update_attachment_metadata($attach_id, $attach_data);

// Adds the thumbnail to the post
update_post_meta($post_id, '_thumbnail_id', $attach_id);

虽然我可以使用 Imagemagick 完成所有这些工作,但我更喜欢使用 Wordpress 自己的功能来完成它。任何帮助将不胜感激!

【问题讨论】:

    标签: image wordpress thumbnails


    【解决方案1】:

    从 Wordpress 3.6 开始,我认为没有内置方法可以“放大”输入图像,以便在源图像太小的情况下适合/填充请求的缩略图大小。

    不过,缩小规模很简单。任何寻求此问题解决方案的人现在都可能知道,许多用户似乎建议/混淆“add_image_size”作为此类问题的适当解决方案。这不是整个解决方案。

    请务必注意,如果源图像的宽度或高度小于预定义的缩略图/图像大小尺寸(即,通过 add_image_size 或通过设置指定的尺寸),则 WP 将返回原始源图像的缩略图。显然,这可能会令人沮丧。

    许多其他用户建议只使用 CSS 来达到预期的效果;例如,强制最小宽度或高度。尽管 CSS 可以在许多情况下工作,但它不会在所有情况下工作,尤其是在您处理流畅或响应式布局的情况下。

    下面是一个粗略的、未经测试的过滤器,用于强制缩略图始终适合所需的尺寸。把它放在你的functions.php中,它还需要timthumb.php在你的主题中可用。您可能需要对其进行修改以适应您的具体情况,或许可以通过多种方式对其进行改进。

    function my_image_downsize($src_data, $thumbnail_id, $size) {
        static $omit = false;
        global $_wp_additional_image_sizes;
    
        if($omit) {
            return $src_data;
        }
    
        $omit = true;
    
        $thumbnail_src_data = wp_get_attachment_image_src($thumbnail_id, $size);
    
        $img_url = $thumbnail_src_data[0];
        $width = $thumbnail_src_data[1];
        $height = $thumbnail_src_data[2];
    
        if(is_string($size) && isset($_wp_additional_image_sizes[$size]) && ($width < $_wp_additional_image_sizes[$size]['width'] || $height < $_wp_additional_image_sizes[$size]['height'])) {
            // "Upsize" the image as needed, to meet the minimum dimension of the thumbnail.
            $width = $_wp_additional_image_sizes[$size]['width'];
            $height = $_wp_additional_image_sizes[$size]['height'];
            $img_url = get_stylesheet_directory_uri() .'/timthumb.php?src='.$img_url.'&w='.$width.'&h='.$height.'&zc=2&cc=000000'; // TODO: replace timthumb with WP's native media class
        } else {
            $omit = false;
            return $src_data;
        }
    
        $omit = false;
    
        return array($img_url, $width, $height);
    }
    add_filter('image_downsize', 'my_image_downsize', 10, 3);
    

    【讨论】:

      猜你喜欢
      • 2014-09-28
      • 2011-03-11
      • 2018-04-06
      • 1970-01-01
      • 2012-04-02
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      相关资源
      最近更新 更多