Php 使用透明颜色旋转图像
我打算使用php gd旋转一个透明颜色的图像。但是,旋转后,图像中的透明颜色不再透明,背景也不透明。这是我的密码Php 使用透明颜色旋转图像,php,image-processing,transparency,image-rotation,php-gd,Php,Image Processing,Transparency,Image Rotation,Php Gd,我打算使用php gd旋转一个透明颜色的图像。但是,旋转后,图像中的透明颜色不再透明,背景也不透明。这是我的密码 $im = imagecreatefromgif('/images/80-2.gif'); $rotate = imagerotate($im,30,imagecolorallocatealpha($im, 0, 0, 0, 127)); imagegif($rotate,'/images/rotate.gif'); imagedestroy($im); imagedestroy($
$im = imagecreatefromgif('/images/80-2.gif');
$rotate = imagerotate($im,30,imagecolorallocatealpha($im, 0, 0, 0, 127));
imagegif($rotate,'/images/rotate.gif');
imagedestroy($im);
imagedestroy($rotate);
有人能帮我把它弄好吗?谢谢。要保持图像的透明度,您需要使用两种设置,这两种设置可以通过在访问gd资源后立即调用这些函数来完成
imagealphablending( $im, false );
imagesavealpha( $im, true );
alex.michel提出的解决方案不适合我使用gif:背景是透明的,但不是我原始gif的alpha。它是蓝色的,看起来像画纸。 关于mishu的解决方案,它不适用于GIF(引自php.net手册): imagesavealpha()设置标志以尝试保存完整的alpha通道 保存PNG时的信息(相对于单色透明度) 图像 对于png,我使用它,效果非常好:
$source = imagecreatefrompng($image);
imagealphablending($source, false);
imagesavealpha($source, true);
$rotated = imagerotate($source, $angle, imageColorAllocateAlpha($source, 0, 0, 0, 127));
imagealphablending($rotated, false);
imagesavealpha($rotated, true);
imagepng($rotated, $image);
我仍在寻找适合gif的东西…似乎是一个老问题,这里有一个解决办法:谢谢你的回复,但代码对我不起作用。我想知道为什么旋转后我会失去所有的透明度。我不知道为什么你的代码对我不起作用。创建原始图像时,我使用imagecolortransparent()方法将红色转换为透明色。但在旋转之后,透明的颜色会变回红色。为什么会发生这种情况?谢谢。所以这里有更多的步骤,而不仅仅是这个示例中的步骤;也许你应该对这两幅图像都尝试一下(我想你是将图像保存为80-2.gif并再次处理它或类似的东西)。。你应该看到哪里失去了透明度。。另外,我认为这些调用应该在创建gd资源之后立即进行。。