从 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);