web-dev-qa-db-fra.com

add_image_sizes en ignorant la taille des cultures et en utilisant des proportions

Avant de commencer, l'image est vraiment assez grande.

J'ai une image au format 2206 x 2042 et je souhaite la recadrer (et non la redimensionner) de différentes manières pour pouvoir être utilisée en conséquence.

Les tailles que j'essaye de produire sont:

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

La première image recadre comme il est supposé, les deux suivantes à l’échelle au lieu de recadrer. Ceci est trouvé en regardant dans le dossier uploads, rien à voir avec les problèmes de templates.

@Andy Macauley-Brook Les tailles de sortie réelles sont les suivantes:

730 x 1842 730 X 1000 730 X 600 Ainsi, le recadrage effectif fonctionne uniquement de manière proportionnelle pour les deux derniers au lieu d'un recadrage réel

Est-ce que quelqu'un sait pourquoi et peut éventuellement m'aider?

3
wagg-matt

WordPress "recadrer" ne signifie pas littéralement recadrer. Comme dans prendre une image et couper cette partie précise de celle-ci à partir du point spécifié.

En gros, cela signifie: redimensionnez l’image pour s’adapter le mieux possible, puis recadrez les parties qui ne correspondent pas. En réalité, cela signifiait queratioaffectait les résultats de l'image source et de la taille de la cible.

La logique exacte est contenue dans la fonction image_resize_dimensions() et résumée par les commentaires en ligne comme suit:

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

Pas seulementexactpartie, maisplus grande possiblepartie de l'original.

Les étapes exactes sont les mathématiques et ne sont pas trop faciles à lire et/ou expliquer brièvement. En un coup d’œil, ce qui semble se passer est:

  1. Le rapport de l'image originale est calculé.
  2. Comment déterminer le mieux la taille cible?.
  3. Crop appliqué sur le résultat de l'étape précédente.

Dans votre cas spécifique, la différence entre les tailles est que les deux premières sonttall(plus grande hauteur) et le troisième estwide(plus grande largeur).

  • Dans le cas précédent, le format de l'original est défini parheight, puisleftune partie est coupée.
  • Dans ce dernier cas, le format de l'original est défini parwidth, puistopune partie est coupée.

C'est ce qui conduit à des tailles différentes. Comme les rapports d'aspect sont différents, WP s'intègre de manière différente dans leur originalité.

Si vous les regardez côte à côte, vous voyez bien comment cette logique a été appliquée:

 wordpress image sizes crop 

8
Rarst