我正在尝试使用 GD 更改图像的不透明度,我找到的几乎所有解决方案都类似于下面的代码,您可以在其中创建白色透明背景并将其与图像合并。
但这并不能使图像透明,图像只会变亮,您实际上无法看透它。
所以我的问题是,如何更改图像的不透明度以便您可以看穿它? 还是我对这段代码做错了什么?
//Create an image with a white transparent background color
$newImage = ImageCreateTruecolor(300, 300);
$bg = ImageColorAllocateAlpha($newImage, 255, 255, 255, 127);
ImageFill($newImage, 0, 0, $bg);
//Get the image
$source = imagecreatefrompng('my_image.png');
$opacity = 50;
//Merge the image with the background
ImageCopyMerge($newImage,
$source,
0, 0, 0, 0,
300,
300,
$opacity);
header('Content-Type: image/png');
imagepng($newImage);
imagedestroy($newImage);
谢谢!
最佳答案
你只需要使用 imagefilter
和 IMG_FILTER_COLORIZE
$image = imagecreatefrompng('my_image.png');
$opacity = 0.5;
imagealphablending($image, false); // imagesavealpha can only be used by doing this for some reason
imagesavealpha($image, true); // this one helps you keep the alpha.
$transparency = 1 - $opacity;
imagefilter($image, IMG_FILTER_COLORIZE, 0,0,0,127*$transparency); // the fourth parameter is alpha
header('Content-type: image/png');
imagepng($image);
imagealphablending
,我认为是用于绘图目的,因此您不想使用它。我可能是错的。我们都应该查一下:)
如果你想使用百分比,你可以相应地计算$opacity
。
关于php - 在 PHP 中更改图像的不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14468405/