web-dev-qa-db-fra.com

Recadrer une image sans la redimensionner ou la redimensionner avec add_image_size ()

Les deux ont tendance à réduire l'image, puis à la rogner aux dimensions indiquées.

Ce que je veux, c'est simplement rogner le centre de l'image en 475 x 310

add_image_size( 'test', 475, 310, array( 'center', 'center' ) );
add_image_size( 'test2', 475, 310, true );

BTW J'utilise le plugin regenerate-thumbnails pour recréer toutes les images après avoir créé un nouveau décélération add_image_size ().

Voici une image de 1400 x 788 pixels, où j'ai ajouté une boîte rose directement au centre qui fait 475 x 310 pixels  enter image description here 

J'ai téléchargé l'image dans mon message. Plutôt que ce que je veux, qui consiste à rogner l'image dans la zone rose, elle est d'abord réduite puis rognée à la plus petite dimension. Ci-dessous, la nouvelle image de mon répertoire wp-content/uploads produite à partir de add_image_size( 'test', 475, 310, array( 'center', 'center' ) ); et le même résultat lorsque je modifie ce bit en add_image_size( 'test', 475, 310, TRUE ); enter image description here 

Qu'est-ce que je fais mal?

1
winchendonsprings

Vous ne pouvez pas faire cela avec la fonction add_image_size(), après beaucoup de recherches et de fouilles dans les fichiers core, ce que l'option Hard Crop de la fonction add_image_size() fait réellement est de redimensionner l'image en utilisant la dimension inférieure, puis la taille spécifiée est rognée.

par exemple si vous créez une nouvelle taille d'image:

add_image_size( 'test2', 475, 310, true );

et télécharger une image comme celle-ci:

 enter image description here 

il redimensionnera l'image en utilisant la height310 (puisque c'est la valeur la plus basse) en conservant le rapport de format, comme ceci:

 enter image description here 

ensuite, il recadrera l'image à l'aide de l'image redimensionnée, en fonction de la position d'envoi ou de la valeur par défaut center , center. Le carré rouge se chevauchant correspond à la taille 475, 310 et correspond à la zone qui sera recadrée:

 enter image description here 

 enter image description here 

 enter image description here 

top et bottom n'ont pas d'importance, mais c'est parce que l'image a été redimensionnée à l'aide de la variable height. Si c'était le cas dans l'autre sens, la width étant la plus basse, l'image serait grande et la left et right ressemblerait à eux. ne compte pas.

Pour accomplir ce que vous essayez de faire, vous aurez besoin d'un plugin ou d'un développeur qui ajoutera le code nécessaire à votre thème. Cela ne peut pas être fait maintenant avec les outils intégrés par défaut de wordpress.

Ces fonctions sont celles qui font tout cela:

1
David Lee