图片合成实现了,但是有个问题,合成上去的图片用imagerotate做了旋转,背景咋处理实现透明效果呢,不想要颜色填充

解决方案 »

  1.   

    $path_1 = "./images/Penguins.jpg";
    //装备图片
    $path_2 = "./images/000.gif";//将人物和装备图片分别取到两个画布中
    $image_1 = imagecreatefromjpeg($path_1);
    $image_2 = imagecreatefromgif($path_2);// Rotate
    $image_2 = imagerotate($image_2, 50, imagecolorallocatealpha($image_2, 0x00, 0x00, 0x00, 0));//创建一个和人物图片一样大小的真彩色画布(ps:只有这样才能保证后面copy装备图片的时候不会失真)
    $image_3 = imageCreatetruecolor(imagesx($image_1),imagesy($image_1));
    //为真彩色画布创建白色背景,再设置为透明
    $color = imagecolorallocate($image_3, 255, 255, 255);
    imagefill($image_3, 0, 0, $color);
    imageColorTransparent($image_3, $color);
    //首先将人物画布采样copy到真彩色画布中,不会失真
    imagecopyresampled($image_3,$image_1,0,0,0,0,imagesx($image_1),imagesy($image_1),imagesx($image_1),imagesy($image_1));
    //再将装备图片copy到已经具有人物图像的真彩色画布中,同样也不会失真
    imagecopymerge($image_3,$image_2, 320,320,0,0,imagesx($image_2),imagesy($image_2), 100);
    //将画布保存到指定的gif文件#设置水印字体颜色
    $color = imagecolorallocatealpha($image_3,0,0,0,100);
    #设置字体文件路径
    $fff = "c:/windows/fonts/arial.ttf";
    #水印文字
    $str = "test";
    $str = iconv( 'utf-8','gbk', $str);
    #打水印
    imagettftext($image_3,20,20,20,100,$color,$fff,$str);
    imagejpeg($image_3, "./images/update/test.jpg");上面是我的代码,功能是两张图片合在一块,并且合上去的那张图片(小图片)要旋转一定的角度,同时加文字在上面,图片可以随便找两张就行
      

  2.   

    只对你的代码简单改了几处$path_1 = "http://avatar.csdn.net/1/5/3/1_bccu.jpg";
    //装备图片
    $path_2 = "http://avatar.csdn.net/5/7/1/1_phpnewnew.jpg";//将人物和装备图片分别取到两个画布中
    $image_1 = imagecreatefromstring(file_get_contents($path_1));
    $image_2 = imagecreatefromstring(file_get_contents($path_2));// Rotate
    $image_2 = imagerotate($image_2, 50, imagecolorallocatealpha($image_2, 0x00, 0x00, 0x00, 0));//创建一个和人物图片一样大小的真彩色画布(ps:只有这样才能保证后面copy装备图片的时候不会失真)
    $image_3 = imageCreatetruecolor(imagesx($image_1),imagesy($image_1));
    //为真彩色画布创建白色背景,再设置为透明
    $color = imagecolorallocate($image_3, 255, 255, 255);
    imagefill($image_3, 0, 0, $color);
    imageColorTransparent($image_3, $color);
    //首先将人物画布采样copy到真彩色画布中,不会失真
    imagecopyresampled($image_3,$image_1,0,0,0,0,imagesx($image_1),imagesy($image_1),imagesx($image_1),imagesy($image_1));imagecolortransparent($image_2, imagecolorat($image_2, 0, 0));//再将装备图片copy到已经具有人物图像的真彩色画布中,同样也不会失真
    imagecopymerge($image_3,$image_2, 20,20,0,0,imagesx($image_2),imagesy($image_2), 100);
    //将画布保存到指定的gif文件#设置水印字体颜色
    $color = imagecolorallocatealpha($image_3,0,0,0,100);
    #设置字体文件路径
    $fff = "c:/windows/fonts/arial.ttf";
    #水印文字
    $str = "test";
    $str = iconv( 'utf-8','gbk', $str);
    #打水印
    imagettftext($image_3,20,20,20,100,$color,$fff,$str);
    imagejpeg($image_3);
      

  3.   

    $image_2 = imagerotate($image_2, 50, imagecolorallocatealpha($image_2, 0x00, 0x00, 0x00, 0));
    换个背景色,比如
    $image_2 = imagerotate($image_2, 50, imagecolorallocatealpha($image_2, 0xfe, 0xfe, 0x00, 0));具体情况需要具体对待
    这世界上没有一成不变的东西