Formule de calcul pour redim d'image optimal

Fermé
Trigone - 24 nov. 2009 à 16:00
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 - 24 nov. 2009 à 17:19
Bonjour,
Je cherche une "formule magique" pour redimensionner/recadrer automatiquement une image sur une taille fixe tout en préservant le maximum de sa surface sans déformation.

Par exemple : j'ai une page de 10 vignettes de 100x70 pixels chacune. Les 10 photos d'origine ont toutes un format différent (carrées, rectangulaires en largeur, rectangulaires en hauteur, ...) et je veux faire un script PHP qui les retaille tout seul sur du 100x70. Mais...

A) Si je redimensionne en me basant sur la largeur ET la hauteur de la vignette, j'aurai bien ma taille fixe cible, mais la photo d'origine sera déformée (étirée en largeur ou en hauteur).
B) Si je redimensionne en me basant sur la largeur OU la hauteur de la vignette, l'autre côté sera ajusté en proportion "à la baisse" et sera toujours inférieur à 100 ou 70 pixels (sauf images homothétiques).
C) Si j'utilise l'option B) en comblant l'espace manquant par des bandes de couleur latérales (genre bandes noires horizontales quand on regardait des films de cinéma à la télé), j'ai à la fois ma taille fixe cible et aucune déformation, mais c'est moche et je vais encore avoir un mélange de bandes horizontales / bandes verticales selon le format des photos redimensionnées.

D) Je pensais donc passer par 2 étapes :
- Redimensionner comme avec l'option B) mais "à la hausse".
J'obtiens donc une image qui fait largeur=100 et hauteur>70 ou largeur>100 et hauteur=70.
- Recadrer automatiquement le résultat : en gros, centrer la vignette sur la photo redimensionnée et "couper les bords qui dépassent".
On obtient au final une jolie vignette de 100x70 dans tous les cas, non déformée et sans bandes noires !

La question que je me pose, c'est comment préserver le maximum de surface de la photo d'origine dans les différents cas : carrée avec largeur > à celle de la vignette, carrée avec longueur > à celle de la vignette, rectangulaire en hauteur avec largeur légèrement < à celle de la vignette, rectangulaire en hauteur avec largeur très < à celle de la vignette, etc.

Faut-il redimensionner avant et recadrer après (a priori, oui), faut-il redimensionner selon la largeur ou la hauteur de la vignette, ...
Je suppose qu'il y a des calculs savants à faire selon la surface de la vignette, celle de la photo, le rapport hauteur/largeur de chacune, mais d'abord je ne suis pas très doué en maths et j'ai peu de temps pour ça, et ensuite j'ai pensé qu'il pouvait être intéressant de publier cette question pour que la réponse serve à tout le monde...

Merci de votre attention !

1 réponse

avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
24 nov. 2009 à 17:19
0