自从过去两天以来,我试图在使用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);
任何帮助都将受到高度赞赏。
答案 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() - 我认为这就是你要找的。 p> 编辑:这是一个例子:
$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);