问题描述

情况是这样的:我使用视频缩略图插件来自动获取并设置 YouTube /Vimeo 缩略图作为功能特征图像。问题是,默认的 youtube /vimeo 缩略图大小只是比我的主题主要内容宽度小一点。

所以我需要的是扩大规模。如果我去媒体库,我可以手动编辑每个图像,然后设置我的确切宽度和 WordPress 的尺寸正确 (我不介意质量有点差) 。那么每次上传图片时,WP 会自动执行哪种操作?

这是我定义的图像大小:add_image_size('post-full', 688, 320, true); Vimeo 大拇指尺寸是 640×320 。

最佳解决方案

您可以使用本机 Wordpress image_resize 功能来放大图像。 WordPress 提供了一个名为”image_resize_dimensions” 的钩子,您可以使用它来覆盖默认裁剪设置。这是一个修改的功能,将支持扩展:

function image_crop_dimensions($default, $orig_w, $orig_h, $new_w, $new_h, $crop){
    if ( !$crop ) return null; // let the wordpress default function handle this

    $aspect_ratio = $orig_w / $orig_h;
    $size_ratio = max($new_w / $orig_w, $new_h / $orig_h);

    $crop_w = round($new_w / $size_ratio);
    $crop_h = round($new_h / $size_ratio);

    $s_x = floor( ($orig_w - $crop_w) / 2 );
    $s_y = floor( ($orig_h - $crop_h) / 2 );

    return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h );
}

现在钩这个功能像这样:

add_filter('image_resize_dimensions', 'image_crop_dimensions', 10, 6);

完成之后,您可以使用 image_resize 功能根据需要向上或向下缩放图像。

$cropped_image = image_resize($image_filepath, $width, $height, true);

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。