我有一个透明的SVG图像,我试图生成该图像的缩略图。它正确地生成了图像的缩略图,但它删除了图像的透明度,并为图像添加了黑色背景。我想生成缩略图而不失去图像的透明度。
注意-同样的问题与jpg和jpeg图像也,但我添加白色背景的图像在svg的情况下,它不使透明的背景 我正在使用PHP vip库。
这是我的代码
$im = VipsImage::thumbnail($filename, 180, ['height' => 225, 'size' => 'both']);
$alpha = $im->hasAlpha();
if($alpha) {
$im = $im->flatten(['background' => [255, 255, 255]]);
}
只要写一个支持透明的格式,比如PNG。
例如:
$im = VipsImage::thumbnail("x.svg", 180, ['height' => 225, 'size' => 'both']);
$im->WriteToFile("x.png");
WEBP, GIF, HEIC, AVIF, TIFF等也支持透明度。