$image =imagecreatefrompng("17.png");
        imagealphablending($image, true);
$water =imagecreatefrompng("18.png");
        imagealphablending($water, true);
$width =imagesx($water);
$height = imagesy($water);
//将水印加到图片左上角
        imagecopyresampled($image,$water,3,22,0,0,$width,$height,$width,$height);
$background_color = imagecolorallocate($water, 255, 255,255);//背景色为白色  
imagecolortransparent($image,$background_color);//将背景颜色(白色)设置为透明色 
        imagejpeg($image,"17_a.png",100);
imagedestroy($image);        来一来,看一看
        大家来看看为什么背景没有变成透明的,应该怎么样做才行
        

解决方案 »

  1.   

    这不是把一张图片当水印吗
    怎么没有$transparent = 50;
    我重给你发一个,你比较一下function watermask($destination,$waterpngfilename,$pos = 'rb',$transparent = 50)   
     {  
     $imagetype = array("1"=>"gif","2"=>"jpeg","3"=>"png","4"=>"wbmp");   //here,is the type of image style
     $image_size = getimagesize($destination);  
     $iinfo=getimagesize($destination,$iinfo);   
     $f ="imagecreatefrom".$imagetype[$iinfo[2]];  
     $simage = $f($destination);  
     $imagesize_mask = getimagesize($waterpngfilename);  
     $f ="imagecreatefrom".$imagetype[$imagesize_mask[2]];  
     $simage1 = $f($waterpngfilename); switch($pos)   //the position of the watermask you want
     {  
     case 'lt'://左上角
     imagecopymerge($simage,$simage1,0,0,0,0,$imagesize_mask[0],  
     $imagesize_mask[1],$transparent);  
     break;  
     case 'lb'://左下角
     imagecopymerge($simage,$simage1,0,$image_size[1]-$imagesize_mask[1]  
     ,0,0,$imagesize_mask[0],$imagesize_mask[1],$transparent);  
     break;  
     case 'rt':  
     imagecopymerge($simage,$simage1,$image_size[0]-$imagesize_mask[0],   
     0,0,0,$imagesize_mask[0],$imagesize_mask[1],$transparent);
     break;  
     case 'rb':  
     imagecopymerge($simage,$simage1,$image_size[0]-$imagesize_mask[0],   
     $image_size[1]-$imagesize_mask[1],0,0,$imagesize_mask[0],  
     $imagesize_mask[1],$transparent);   
     break;  
     }  
     
     $f ="image".$imagetype[$iinfo[2]];  
     $f($simage,$destination);  
     imagedestroy($simage);   
     imagedestroy($simage1);  
     }  
     watermask("destination.jpg","Watermask.gif");//   Call the function here as an example
      

  2.   

    你是要将透明的 $water 变形到 $image
    所以
    imagecolortransparent($image,$background_color);//将背景颜色(白色)设置为透明色
    应为
    imagecolortransparent($water,$background_color);//将背景颜色(白色)设置为透明色
    并在
    imagecopyresampled($image,$water,3,22,0,0,$width,$height,$width,$height)
    之前执行