web-dev-qa-db-ja.com

クロップサイズを無視してプロポーションを使用するadd_image_sizes

始める前に、画像は確かに十分に大きいです。

私は2206 x 2042の画像を持っていますが、それに応じて使用するためにさまざまな方法でトリミング(拡大縮小ではなく)したいと思います。

私が生産しようとしているサイズは以下のとおりです。

add_image_size( 'artist-full-xs', 730, 1842, array('right', 'bottom') );
add_image_size( 'artist-full-xs-sm', 730, 1000, array('right', 'bottom') );
add_image_size( 'artist-full-xs-sm-2', 730, 600, array('right', 'bottom') );

最初の画像は想定どおりにトリミングされ、次の2つは両方ともトリミングではなく拡大縮小されます。これはuploadsフォルダを見るとわかりますが、テンプレートの問題とは関係ありません。

@Andy Macauley-Brook実際のサイズ出力は以下の通りです:

730 x 1842 730 x 1000 730 x 600つまり、実際のトリミングは実際のトリミングではなく、最後の2つに比例して機能しています。

誰もがその理由を知っていて、おそらく私を助けてくれるだろうか?

3
wagg-matt

WordPressの "作物"は文字通り作物を意味するのではありません。のように画像を撮り、指定された点からその正確な部分を切り取ります。

おおまかに言って、画像のサイズをできるだけ大きくするようにリサイズしてから、収まらない部分をトリミングします。実際には、これは結果がソースイメージとターゲットサイズの両方の比率の影響を受けることを意味します。

正確なロジックはimage_resize_dimensions()関数に含まれており、インラインコメントで以下のように要約されています。

// crop the largest possible portion of the original image that we can size to $dest_w x $dest_h

正確な部分だけでなく、元の最大の部分。

正確な手順は数学であり、簡単に読んだり説明したりするにはあまりにも親切ではありません。一見したところ、起こりそうなことは次のとおりです。

  1. 元の画像の比率が計算されます。
  2. 目標サイズにどのように最適に適合するかが決定されます。
  3. 前のステップの結果にクロップを適用しました。

あなたの特定のケースでは、サイズの違いは、最初の2つは高さ(高さが大きい)、3番目の幅は(幅が広い)です).

  • 前者の場合、オリジナルのサイズは高さ、その後の部分が切り取られます。
  • 後者の場合、オリジナルはでサイズ変更され、次に上部部分が切り取られます。

それはサイズが違って見えることにつながります。縦横比が異なるため、WPはさまざまな方法で元のサイズに収まります。

それらを並べて見れば、このロジックがどのように適用されたかがよくわかります。

wordpress image sizes crop

8
Rarst