原图透明正常,商品列表缩略图却是黑底;换成JPEG又没问题。先确认浏览器拿到的文件真的是PNG/WebP,而不是扩展名叫png、内容却被转换成JPEG。
file pub/media/catalog/product/cache/.../image.png identify -verbose source.png | grep -E 'Alpha|Type|Colorspace' php -i | grep -E 'GD Support|ImageMagick'
GD处理透明画布时要保留alpha并关闭混色;自定义图片适配器如果先创建黑色真彩画布,再copyresampled,透明区自然变黑。优先使用Magento当前版本支持的适配器,不要在vendor里临时改函数。
有时只是旧缓存
修代码后原有缓存图不会自动重做。定向删除这个SKU对应缓存或使用catalog:images:resize重新生成,先别一上来删整个media目录。CDN还可能缓存旧缩略图,需要按URL失效。
测试准备四张图:透明PNG、半透明阴影PNG、普通JPEG、带ICC配置的图片。商品页、列表、购物车和邮件里的尺寸都看一遍,避免修了透明度却把颜色或内存占用弄坏。

