图像中的背景透明度rotate()

时间:2010-04-22 18:53:04

标签: php gd

自从过去两天以来,我试图在使用imagerotate()PHP-GD函数旋转图像后为后台添加transperancy。

但是,令我非常失望的是,它根本不起作用。

它只是在背后给出了黑色背景。

这是我的代码 -


$patchImageS    =   'image.png'; // the image to be patched over the final bg
$patchImage =   imagecreatefrompng($patchImageS); // resource of image to be patched
$patchImage     =   imagerotate($patchImage, 23, 0, 0);
imagepng($patchImage,'tt.png');

我尝试将函数中传递的参数更改为

imagerotate($ patchImage,23,5,0);

imagerotate($ patchImage,23,0,5);

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:5)

经过多次99%的答案后,这是我找到的解决方案:

// Create, or create from image, a PNG canvas
$png = imagecreatetruecolor($width, $height);

// Preserve transparency
imagesavealpha($png , true);
$pngTransparency = imagecolorallocatealpha($png , 0, 0, 0, 127);
imagefill($png , 0, 0, $pngTransparency);

// Rotate the canvas including the required transparent "color"
$png = imagerotate($png, $rotationAmount, $pngTransparency);

// Set your appropriate header
header('Content-Type: image/png');

// Render canvas to the browser
imagepng($png);

// Clean up
imagedestroy($png);

这里的关键是在imagerotate()调用中包含你的imagecolorallocatealpha()......

答案 1 :(得分:4)

在php文档中查找imagesavealpha() - 我认为这就是你要找的。 编辑:这是一个例子:

$png = imagecreatefrompng('./alphachannel_example.png');

// Do required operations
$png = imagerotate($png, 23, 0, 0);

// Turn off alpha blending and set alpha flag
imagealphablending($png, false);
imagesavealpha($png, true);

// Output image to browser
header('Content-Type: image/png');

imagepng($png);
imagedestroy($png);