状況はこれです:私は自動的にポスト特集画像としてYouTube/Vimeoのサムネイルを取得して設定するためにビデオサムネイルプラグインを使用しています。問題は、デフォルトのyoutube/vimeoサムネイルサイズが私のテーマのメインコンテンツの幅よりほんの少し小さいことです。
だから私はそれらをスケールアップすることが必要です。メディアライブラリに移動した場合は、各画像を手動で編集してから正確な幅を設定すると、WordPressでその画像が正しく拡大されます(品質が少し悪くなることはありません)。それで、画像がアップロードされるたびにWPが自動的にそうする方法はありますか?
これは私の定義した画像サイズです:add_image_size('post-full', 688, 320, true);
Vimeoサムサイズは640x320です。
ネイティブの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);
最も簡単な方法は、640 x 298の画像サイズを追加し、それをサイズ変更するためにcssを使用することです。それはほんの少しのスケールアップなので、ブラウザのスケールはかなりうまくいくはずです。
残念ながら、私が知っているすべてのプラグインは画像のアップスケーリングを提供せず、小さい画像サイズを生成するだけなので、688x320をサーバー上で使用したい場合は既存のプラグインのいずれかを編集する必要があります。
imagickがインストールされている場合は、325行目のvideo-thumbnails.phpファイルでプラグインを変更し、次のコードを使用してより大きなバージョンのサムネイルを生成することができます。
$image_big = new Imagick();
$image_big->setOption('jpeg:size', '688x344');
$image_big->readImage($new_thumbnail);
$upload = wp_upload_bits( basename( $new_thumbnail ), null, $image_big );
そしてWordpressにそれからより小さなサムネイルを生成させます(高さを切る)。 Imagickコード内のさまざまなVideoplatformに対して、必ずさまざまなイメージサイズを作成してください。