注目の投稿のサムネイルを拡大するには?


11

状況は次のとおりです。私は、Video Thumbnailsプラグインを使用して、youtube / vimeoのサムネイルを自動的に取得し、投稿の注目画像として設定しています。問題は、デフォルトのyoutube / vimeoサムネイルサイズが、テーマのメインコンテンツの幅よりも少し小さいことです。

だから私はそれらをスケールアップすることです。メディアライブラリーに行く場合は、各画像を手動で編集してから、正確な幅を設定し、WordPressが適切に拡大します(品質が少し悪いことは気にしません)。では、画像がアップロードされるたびにWPが自動的にそれを行う方法はありますか?

これは私の定義した画像add_image_size('post-full', 688, 320, true);サイズです。Vimeoの親指のサイズは640x320です。


1
これは、leviによるソリューションとjackrugileによる修正に基づいて、サムネイルをアップスケールするために私が作成したプラグインです。wordpress.org/support/plugin/thumbnail-upscale
khromov 2015

回答:


20

ネイティブの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);

この方法を使用していますが、トリミングされた画像を生成しようとすると、次のエラーが表示されます。画像エディターの保存に失敗しました-何かアイデアはありますか?
Felix Eve

2015年7月のWordpress 4.1.5でも引き続き正常に動作します。投稿の注目画像用に小さな画像を拡大するために必要なもの。
Mark Rummel、2015

作物の位置オプションをサポートするためにお探しの方のために、右の関数の戻り値の前に次のコードを追加します if( is_array( $crop ) ) { if( $crop[ 0 ] === 'left' ) { $s_x = 0; } else if( $crop[ 0 ] === 'right' ) { $s_x = $orig_w - $crop_w;} if( $crop[ 1 ] === 'top' ) { $s_y = 0; } else if( $crop[ 1 ] === 'bottom' ) { $s_y = $orig_h - $crop_h; } }
jackrugile

Wordpress 5.1.1で2019年4月に引き続き機能します。私はそれを使用して、私の希望するカスタムよりも小さい高級画像を強制しますadd_image_size。サムネイルの再生成プラグインとともに。
Mtxz

add_image_size関数で機能させるには?
ゲディミナス

0

最も簡単な方法は、640x298の画像サイズを追加し、cssを使用してサイズを変更することです。ほんの小さなスケールアップなので、ブラウザのスケーリングは非常にうまく機能するはずです。

残念ながら、私が知っているすべてのプラグインは画像のアップスケーリングを提供せず、より小さな画像サイズを生成するだけなので、サーバーに688x320を搭載したい場合は、既存のプラグインの1つを編集する必要があります。

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

ワードプレスに小さなサムネイルを生成させます(高さを切り取ります)。Imagickコードでは、さまざまなビデオプラットフォームに合わせてさまざまな画像サイズを作成してください。


私は今すぐCSS修正に進むと思います。これは、私の状況で実際に実行する最も簡単/最速の方法です。私はWPコアファイルもチェックしましたが、サイズ変更関数はmin()を使用しているようです。最小の幅/高さを決定し、それを変更するフックがないため、アップロード時に画像を拡大しません。
evaqas

「image_resize_dimensions」と呼ばれる使用可能なフックがあり、min()なしで関数を書き換えることができます。
levi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.