我尝试了两种不同的图像,但仍然将黑色/ alpha透明度替换为黑色:
使用的原始代码imagejpeg
我已经注释掉了b.c. jpegs不支持透明度,而是由imagepng
替换。
以下是我的原始测试图片,其中包含alpha:
这是我从php.net测试的解决方案。实际上这会扭曲黑白图像/ w alpha背景。
private function imageCreateTransparent($x, $y) {
$imageOut = imagecreatetruecolor($x, $y);
$colourBlack = imagecolorallocate($imageOut, 0, 0, 0);
imagecolortransparent($imageOut, $colourBlack);
return $imageOut;
}
答案 0 :(得分:3)
经过一些尝试,结果是使用imagefill 使用alpha,但你也需要调用imagesavealpha
。
如果将其包装在函数中,最终代码将如下所示。
function imagecreatealpha($width, $height)
{
// Create a new image
$i = imagecreatetruecolor($width, $height);
// for when you convert to a file
imagealphablending($i, true);
imagesavealpha($i, true);
// Fill it with transparent color (translucent black in this case)
imagefill($i, 0, 0, 0xff000000);
return $i;
}
然后像这样使用它:
$i = imagecreatealpha(500, 500);
// Further processing goes here
// Output
header('Content-type: image/png');
imagepng($i);
同样适用于加载具有Alpha透明度的png图像。奇怪的是,PHP并没有自动执行此操作:
答案 1 :(得分:2)
您需要调用imagesavealpha
和imagealphablending
函数。
请参阅:http://www.php.net/manual/en/function.imagesavealpha.php第一个示例。