web-dev-qa-db-fra.com

add_image_size paysage ou portrait

J'ai un projet orienté image. Les images sont de différentes dimensions et orientations. Suivant les règles suivantes, je génère des images plus petites:

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

Considérant que add_image_size( string $name, int $width, int $height, bool|array $crop = false ), je dois trouver un moyen de générer des images avec FLEXIBLE_width but FIXED_height , pour la même clé d’image (string $name).

Explication:

Le code actuel ne prend en charge que les images de paysages. J'ai besoin de réaliser des portraits, basés sur la valeur FIXED_height.

Je vois une approche pour déclarer le deuxième ensemble de tailles d’image pour les images portrait (big_xxl_portrait, big_xl_portrait et ainsi de suite, où int $width sera '9999'), et définir ce qu’il faut afficher sur le système frontal en fonction de la logique if($image_is_portrait){...}else{...}.

Demander s’il est possible de générer une image du même string $name, dont la taille dépend de l’orientation de l’image originale, car le fait de disposer de copies uniques de ces images augmentera considérablement les coûts du serveur (valeur de stockage requise) et ce sera un désordre total. .

Mise à jour: modification de la question afin de créer un problème

2
Ignat B.

Ce que vous demandez est fonctionnellement équivalent à redimensionner des images pour les adapter à un carré de délimitation de chaque taille. Vous pouvez donc le réaliser avec ceci:

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

Prenons une image de paysage au format 5000x500. Ces règles généreront des images à l'échelle 4500, 3300, 2100 et 1250.

Pour une image portrait de 500x5000, ces règles généreront des images à l'échelle 4500, 3300, 2100 et 1250.

1