在背景图像顶部旋转图像

时间:2012-10-25 20:14:37

标签: php php-gd

我有两张照片。一个是旋转的宝丽来帧polaroid.jpg的jpg图像。另一个只是普通的图像image.jpg

我正在尝试旋转图像,然后将其放在宝丽来图像的顶部,然后将合并的图像显示为一个jpg图像。

我认为我与以下代码非常接近,但我无法让transparancy工作。旋转图像的未覆盖区域是黑色而不是透明。我究竟做错了什么?我已经为与顶部图像获得透明背景相关的行添加了注释。

$bg_src = "polaroid.jpg";

$img_src = "image.jpg";

$outputImage = imagecreatefromjpeg($bg_src);

$img = imagecreatefromjpeg($img_src);

// This should create transparent background.
$bgd_color = imagecolorallocatealpha($img, 0, 0, 0, 127); 

// This should assign the transparent background to the uncovered zone after rotation
$img = imagerotate($img, 10, $bgd_color);

// This should make sure the alpha transparency gets saved
imagesavealpha($img, true);

$img_x = imagesx($img);

$img_y = imagesy($img);

imagecopymerge($outputImage,$img,156,50,0,0,$img_x,$img_y,100);

header('Content-type: image/jpeg');

imagejpeg($outputImage);

imagedestroy($outputImage);

1 个答案:

答案 0 :(得分:1)

经过一番搜寻后计算出来。事实证明这很简单。 我只是更改了这一行:

imagesavealpha($img, true);

到此:

imagecolortransparent($img,$bgd_color);

耶! :)