web-dev-qa-db-ja.com

add_image_size横または縦

私はイメージ指向のプロジェクトです。画像の大きさや方向はさまざまです。以下のルールに基づいて私は小さな画像を生成しています:

add_image_size('big_xxl', 4500, 9999); // 4500 x flex_height
add_image_size('big_xl', 3300, 9999);  // 3300 x flex_height
add_image_size('big', 2100, 9999);     // 2100 x flex_height
add_image_size('medium', 1250, 9999);  // 1250 x flex_height

そのadd_image_size( string $name, int $width, int $height, bool|array $crop = false )を考慮して、同じ画像キー(string $name)に対して、 FLEXIBLE_width しかし FIXED_height で画像を生成する方法を見つける必要があります。

説明:

現在のコードは風景画像のみをサポートします。私は肖像画の画像を達成する必要があります、それはFIXED_height値に基づきます。

ポートレート画像用に2番目の画像サイズセット(big_xxl_portraitbig_xl_portraitなど。ここでint $width'9999'になります)を宣言し、if($image_is_portrait){...}else{...}ロジックに基づいてフロントエンドに何を表示するかを定義するアプローチがあります。

同じstring $nameの画像を生成することが可能であるかどうかを尋ねると、それらの画像の不要なコピーを持つことはサーバコストを劇的に増加させ(必要な記憶容量を必要とする)、合計でファイルの混乱になります。 。

更新:課題トレッドをまとめるための質問の編集

2
Ignat B.

あなたが求めているのは、機能的には、各サイズの四角形の境界内に収まるように画像を拡大縮小することと同等です。

add_image_size('big_xxl', 4500, 4500);
add_image_size('big_xl', 3300, 3300);
add_image_size('big', 2100, 2100);
add_image_size('medium', 1250, 1250);

5000×500の風景画像を考えます。これらのルールは、4500、3300、2100、1250の幅に拡大縮小された画像を生成します。

500x5000のポートレート画像の場合、これらのルールは4500、3300、2100、1250の高さに拡大縮小された画像を生成します。

1