Tôi đang sử dụng bộ lọc thang độ xám trên tất cả các hình ảnh được tải lên trong cài đặt WordPress của mình. Tuy nhiên tôi muốn cả hình ảnh tỷ lệ xám và hình ảnh màu trong trang web của tôi (được tô màu khi di chuột). Cách tôi đã cố gắng để làm điều này là tạo ra một loạt các add_image_size () giống như vậy:
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
Và sau đó tôi sẽ thực hiện một bộ lọc trên các hình ảnh và chỉ lấy ID * -grayscale và lưu chúng:
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;
}
Nó sẽ hoạt động tốt, nhưng rõ ràng add_image_size () xem xét các đối số chiều rộng và chiều cao và khi một kích thước đã được xác định với sự kết hợp đó, kích thước không được thêm vào. Tôi có thể hiểu rằng, vì chức năng là để thêm kích thước mới, và nếu kích thước là trùng lặp, thông thường tốt hơn là không thêm nó một lần nữa để tiết kiệm thời gian xử lý. Nhưng bây giờ tôi muốn hai hình ảnh có cùng kích thước, nhưng một hình ảnh có bộ lọc được áp dụng cho nó và hình ảnh kia là bản gốc.
Làm thế nào tôi có thể đạt được điều này?
Tôi đã cố gắng thêm kích thước khác chỉ rộng hơn một pixel, như:
add_image_size( 'gho-small-grayscale', 101, 0, true ); // Used for small grayscaled images
Và sau đó thay đổi kích thước hình ảnh sau này sau khi bộ lọc trở lại 100/200/400
bất cứ điều gì. Nhưng nó không cảm thấy đúng, và nó cũng làm rối get_the_post_thumbnail()
các cuộc gọi vì người ta vẫn nghĩ rằng kích thước hình ảnh là 101x$height
. Nó cũng không đơn giản như thay đổi kích thước hình ảnh trở lại theo một pixel theo chiều ngang và chiều dọc vì tỷ lệ có thể khiến chiều > 1px
cao cao hơn khi bạn có chiều rộng + 1px.