J'utilise un filtre en niveaux de gris sur toutes les images téléchargées dans mon installation WordPress. Cependant, je veux à la fois l'image à l'échelle grise et l'image colorée dans mon site Web (colorée en survol). La façon dont j'ai essayé de le faire était de créer un tas de add_image_size () comme ceci:
add_image_size( 'gho-small', 100, 0, true ); // Used for small images
add_image_size( 'gho-small-grayscale', 100, 0, true ); // Used for small grayscaled images
add_image_size( 'gho-medium', 200, 0, true ); // Used for medium images
add_image_size( 'gho-medium-grayscale', 200, 0, true ); // Used for medium grayscaled images
add_image_size( 'gho-large', 400, 0, true ); // Used for large images
add_image_size( 'gho-large-grayscale', 400, 0, true ); // Used for large grayscaled images
Et puis je ferais un filtre sur les images et ne prendrais que les ID * -grayscale et les enregistrer:
add_filter('wp_generate_attachment_metadata','gholumns_grayscale_filter');
function gholumns_grayscale_filter($meta)
{
$dir = wp_upload_dir();
$file = trailingslashit($dir['path']).$meta['sizes']['gho-large-grayscale']['file'];
do_grayscale_filter($file);
return $meta;
}
Cela fonctionnerait bien, mais apparemment, add_image_size () examine les arguments width et height et lorsqu'une taille est déjà définie avec cette combinaison, la taille n'est pas ajoutée. Je peux comprendre que, puisque la fonction consiste à ajouter de nouvelles tailles, et si la taille est un doublon, il est normalement préférable de ne pas l'ajouter à nouveau pour gagner du temps de traitement. Mais maintenant, je veux deux images de la même taille, mais une avec un filtre appliqué et l'autre l'original.
Comment puis-je atteindre cet objectif?
J'ai essayé d'ajouter une autre taille qui est juste un pixel plus large, comme:
add_image_size( 'gho-small-grayscale', 101, 0, true ); // Used for small grayscaled images
Et puis redimensionner l'image plus tard après le filtre à nouveau 100/200/400
. Mais cela ne se sent pas bien, et cela gâche aussi les get_the_post_thumbnail()
appels comme on pense toujours que la dimension d'image est 101x$height
. Ce n'est pas aussi simple que de redimensionner l'image d'un pixel horizontalement et verticalement car les rapports pourraient faire en sorte que la hauteur soit > 1px
plus grande lorsque vous avez une largeur + 1 px.
Réponses:
Gee, je continue de résoudre mes propres problèmes tout le temps. Voici comment je l'ai résolu à la fin. J'ai découvert que add_image_size n'ignore pas les dimensions identiques de la taille de l'image, mais pointe le nom du fichier vers le même fichier dans le répertoire de téléchargement. Une fois que je savais cela, je pouvais simplement enregistrer l'image en niveaux de gris sous un nom différent, retourner ce nom au tableau $ meta dans mon crochet, et WP prend cela comme information à stocker dans la base de données. Toutes les fonctions get_thumbnail () fonctionnent toujours comme elles le devraient et je peux simplement demander l'ID -grayscale.
la source