web-dev-qa-db-ja.com

生成された画像のサイズがメディア設定の画像サイズと一致しません

メディア設定で定義されている次の画像サイズがあります。

Thumbnail Size: 125x69
Medium Size: 461x257
Large Size: 1070x600

最新のWP(4.8)に EWWW Image Optimizer および サムネイルの再生成 がインストールされています。 EWWWオプティマイザーで[詳細設定]を確認したところ、次のスクリーンショットに、生成されるサイズが表示されます。

enter image description here 

それでも、画像をアップロードしたり、サムネイルを強制的に再生したりすると、生成された画像の幅がまったく一致しません。インスタンスのために、私は1070x600の画像をアップロードしました、これが実際にそれが生成するサイズです:

image-123x69.jpg
image-294x165.jpg
image-323x181.jpg
image-335x188.jpg
image-458x257.jpg
image-679x381.jpg
image-768x431.jpg

縦横比によって高さが異なることは理解できますが、生成された画像の幅でも高さが変わる理由がわかりません。

私がfunctions.phpに持っている唯一のコードは以下の通りです:

// Add custom image sizes
add_image_size('home-thumbnail-highlight', 694, 381);
add_image_size('home-thumbnail', 330, 181);
add_image_size('listing-thumbnail', 342, 188);
add_image_size('sidebar-small-thumbnail', 300, 165);

この問題は、たとえば、サムネイル(125xh)を使用すると、生成された画像が123xhでレンダリングされた画像が125xhであるため、画像がわずかにピクセル化されることを意味します。明らかなものを見逃していませんか、それとも生成された幅が常に[メディア設定]ページの幅と一致するようにする方法はありますか。

2
Niraj Pandey

デフォルトでは add_image_size はカスタム画像サイズをトリミングするのではなくサイズ変更しようとします(関数の4番目の引数を参照)。

だからあなたはここにいくつかのオプションがあります...

  1. add_image_sizeの4番目の引数にtrueを渡してクロップを実行するか、4番目の引数に配列を渡してクロップの配置方法をカスタマイズします(ドキュメントを参照)。これにより、画像の寸法は定義されたとおりに正確にリサイズされます(たとえば、 'home-thumbnail-highlight'は694 x 381になります)。
  2. heightを非常に高い値に設定し、({サイズ変更を行うために)トリミングするためにしないに4番目の引数を渡します。

例えば:

add_image_size('home-thumbnail-highlight', 694, 99999);
add_image_size('home-thumbnail', 330, 99999);
add_image_size('listing-thumbnail', 342, 99999);
add_image_size('sidebar-small-thumbnail', 300, 99999);

これにより、カスタムサイズが常にheightではなくwidthに強制的に制限されるようになります。

3
Jared Cobb