最近使用imageColorAllocate方法给图片添加红色文字水印 jpg, gif都ok png水印会变为白色
不是所有png格式都会变为白色水印            switch($size[2])//取得背景图片的格式
            {
                case 1:$ground_im = imagecreatefromgif($pic);break;
                case 2:$ground_im = imagecreatefromjpeg($pic);break;
                case 3:$ground_im = imagecreatefrompng($pic);break;
                default:return;
            }
            $red = imageColorAllocate($pic, $R,$G,$B);
            imagettftext ($ground_im, ceil(25), 0, $posX, $posY, $red, $path, $waterText);
            switch($size[2])//取得背景图片的格式
           {
              case 1:imagegif($ground_im,$pic);break;
              case 2:imagejpeg($ground_im,$pic);break;
              case 3:imagepng($ground_im,$pic);break;
              default:return '上传失败';
          }
 

解决方案 »

  1.   


    header("Content-type: image/png");
    $src = 't.png';
    $srcImageInfo=getimagesize($src);
    $srcImageWidth=$srcImageInfo[0];
    $srcImageHeight=$srcImageInfo[1];
    $srcImage=imagecreatefrompng($src);
    $img=imagecreatetruecolor($srcImageWidth,$srcImageHeight);
    $red=imagecolorallocate($img,255,0,0);//红色
    $waterText = '测试';
    $font = 'msyh.ttf';
    imagecopy($img,$srcImage,0, 0, 0, 0, $srcImageWidth, $srcImageHeight);
    imagettftext($img, 18, 0, 20, 20, $red, $font, $waterText);
    imagepng($img);//,'tt.png'imagepng 第二个参数是生成后的文件名称,但你给 $pic 确实一个资源(因为imagecolorallocate用了 $pic),不知道你的$pic到底是什么