你遇到的核心问题是,WordPress实际上并没有对你的图像做任何事情,因为它并没有放大图像。您可以使用钩子来修改WordPress的行为,而无需对核心进行黑客攻击,也可以尝试使用CSS修复该问题。
将WordPress更改为高档缩略图
ALXMedia has an useful example 添加此行为时。摘录如下。
// Upscale thumbnails when the source image is smaller than the thumbnail size. Retain the aspect ratio.
function alx_thumbnail_upscale( $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\', \'alx_thumbnail_upscale\', 10, 6 );
CSS中的问题是,与容器相比,您的图像具有不同的比例(因为它既不放大也不裁剪),并且您将高度和宽度都设置为100%。您应该做的是将其中一个尺寸设置为100%(本例中的宽度),另一个设置为自动。假设要模拟裁剪,可以将父div上的溢出设置为隐藏,以便裁剪它。但是,这只会裁剪底部,因此您需要使用边距或其他定位技巧,使其看起来像居中裁剪。
下面是一个正确css的示例:
.thumbpost{
width:100%;
height:320px;
overflow:hidden;
}
.thumbpost img{
width:100%;
height:auto;
}