我正在尝试在wordpres中生成一个b&w png拇指。问题是我上传的 png 具有透明度。它们是来自合作伙伴的不同徽标,我需要灰度以匹配模板的设计。
到目前为止,我得到了这个:
// add thumb size
add_image_size('pvz-partnerbw-image', 9999, 64, false);
// Generate BW thumbnail
add_filter('wp_generate_attachment_metadata','pvz_bw_filter');
function pvz_bw_filter($meta) {
$file = wp_upload_dir();
$file = trailingslashit($file['path']).$meta['sizes']['pvz-partnerbw-image']['file'];
list($orig_w, $orig_h, $orig_type) = @getimagesize($file);
$image = wp_load_image($file);
imagefilter($image, IMG_FILTER_GRAYSCALE);
imagesavealpha($image,true);
switch ($orig_type) {
case IMAGETYPE_GIF:
imagegif( $image, $file );
break;
case IMAGETYPE_PNG:
imagepng( $image, $file );
break;
case IMAGETYPE_JPEG:
imagejpeg( $image, $file );
break;
}
return $meta;
}
它几乎可以工作,但问题是在艺术品和透明背景之间的边缘,颜色保持不变。所以我得到了一个带有 1px 红色(或其他颜色)的黑白徽标。任何人都有更好的解决方案 - 不包括照片的那种 希望图像;)。提前谢谢你!
首先,wp_load_image已被贬值。您应该使用wp_image_editor。我建议使用 wp_image_editor 重写您的函数,看看它在应用 GRAYSCALE 滤镜时是否会产生相同的问题。