Sto usando un filtro in scala di grigi su tutte le immagini caricate nella mia installazione di WordPress. Tuttavia, desidero sia l'immagine in scala di grigi sia l'immagine colorata nel mio sito Web (colorata al passaggio del mouse). Il modo in cui ho provato a farlo è stato creare un sacco di add_image_size () in questo modo:
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
E poi farei un filtro sulle immagini e prenderei solo gli ID * in scala di grigi e li salverei:
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;
}
Funzionerebbe bene, ma apparentemente add_image_size () esamina gli argomenti di larghezza e altezza e quando una dimensione è già definita con quella combinazione, la dimensione non viene aggiunta. Posso capire che, poiché la funzione è quella di aggiungere nuove dimensioni, e se la dimensione è una copia, è meglio non aggiungerla di nuovo per risparmiare tempo di elaborazione. Ma ora voglio due immagini con le stesse dimensioni, ma una con un filtro applicato ad essa e l'altra l'originale.
Come posso raggiungere questo obiettivo?
Ho provato ad aggiungere un'altra dimensione che è solo un pixel più ampia, come:
add_image_size( 'gho-small-grayscale', 101, 0, true ); // Used for small grayscaled images
E poi ridimensionare l'immagine in seguito dopo che il filtro è tornato a 100/200/400
qualunque cosa. Ma non sembra giusto, e confonde anche le get_the_post_thumbnail()
chiamate come si pensa ancora che la dimensione dell'immagine sia 101x$height
. Inoltre, non è così semplice come ridimensionare l'immagine di un pixel in orizzontale e in verticale poiché i rapporti potrebbero causare l'altezza > 1px
più alta quando si ha una larghezza + 1px.