dedecms 解决水印使用png无法透明的问题

找到 include/inc_photograph.php 找到 ImgWaterMark 函数

  1. //读取水印图片
  2.     if(!emptyempty($w_img) && file_exists($w_img)){
  3.      $ifWaterImage = 1;
  4.      $info = '';
  5.      $water_info = getimagesize($w_img,$info);
  6.      $width      = $water_info[0];
  7.      $height     = $water_info[1];
  8.      switch($water_info[2]){
  9.            case 1 :
  10.        if(!function_exists("imagecreatefromgif")) return;
  11.        $water_img = imagecreatefromgif($w_img);
  12.        break;
  13.            case 2 :
  14.        if(!function_exists("imagecreatefromjpeg")) return;
  15.        $water_img = imagecreatefromjpeg($w_img);
  16.        break;
  17.            case 3 :
  18.        if(!function_exists("imagecreatefrompng")) return;
  19.        $water_img = imagecreatefrompng($w_img);
  20.        break;
  21.            case 6 :
  22.        if(!function_exists("imagecreatefromwbmp")) return;
  23.        $srcFile_img = imagecreatefromwbmp($w_img);    
  24.        break;
  25.            default :
  26.        return;
  27.      }

找到 $water_img = imagecreatefrompng($w_img); 这行改为:

  1.  if(!function_exists("imagecreatefrompng")) return;
  2.     //经过修改的加水印代码 080818 neo
  3.         $water_im_bak = imagecreatefrompng($w_img);
  4.         $water_img = imagecreatetruecolor($width,$height);  
  5.         imagealphablending($water_img,false);
  6.         imageSaveAlpha($water_img,true);
  7.         $white = ImageColorAllocate($water_img, 255,255,255);
  8.         ImageColorTransparent($water_img,$white);  
  9.         imagecopyresampled($water_img,$water_im_bak,0,0,0,0,$width,$height,$width,$height);
  10.        //$water_img = imagecreatefrompng($w_img);

就好了

你可能感兴趣的:(dedecms 解决水印使用png无法透明的问题)