Добавление на изображение watermark

nuvel

Watermark на изображении отображается в плохом качестве. Не могу понять, что не так в коде:

PHP:
  1. //добавляем на изображение watermark
  2.         function watermarkImage($imgPath) {
  3.             $edgePadding=0;
  4.             $quality=100;
  5.             $size=getimagesize($imgPath);
  6.  
  7.             $original=$imgPath;
  8.  
  9.             $target=$imgPath;
  10.             $watermark=DIR_ROOT.‘img/watermark.png’;
  11.             $wmTarget=DIR_FILES_USER.‘watermark.tmp’;
  12.  
  13.             $origInfo = getimagesize($original);
  14.             $origWidth = $origInfo[0];
  15.             $origHeight = $origInfo[1];
  16.  
  17.             $waterMarkInfo = getimagesize($watermark);
  18.             $waterMarkWidth = $waterMarkInfo[0];
  19.             $waterMarkHeight = $waterMarkInfo[1];
  20.  
  21.             // watermark sizing info
  22.             $waterMarkDestWidth=round($origWidth * 0.5);
  23.             $waterMarkDestHeight=round($origHeight * 0.5);
  24.  
  25.             // OK, we have what size we want the watermark to be, time to scale the watermark image
  26.  
  27.             resize_png_image($watermark,$waterMarkDestWidth,$waterMarkDestHeight,$wmTarget);
  28.  
  29.             // get the size info for this watermark.
  30.             $wmInfo=getimagesize($wmTarget);
  31.             $waterMarkDestWidth=$wmInfo[0];
  32.             $waterMarkDestHeight=$wmInfo[1];
  33.  
  34.             $differenceX = $origWidth $waterMarkDestWidth;
  35.             $differenceY = $origHeight $waterMarkDestHeight;
  36.  
  37.             // where to place the watermark?
  38.  
  39.             $placementX =  round($differenceX);
  40.             $placementY =  round($differenceY);
  41.  
  42.             $resultImage = imagecreatefromjpeg($original);
  43.             imagealphablending($resultImage, TRUE);
  44.  
  45.             $finalWaterMarkImage = imagecreatefrompng($wmTarget);
  46.             $finalWaterMarkWidth = imagesx($finalWaterMarkImage);
  47.             $finalWaterMarkHeight = imagesy($finalWaterMarkImage);
  48.  
  49.             imagecopy($resultImage,
  50.                 $finalWaterMarkImage,
  51.                 $placementX,
  52.                 $placementY,
  53.                 0,
  54.                 0,
  55.                 $finalWaterMarkWidth,
  56.                 $finalWaterMarkHeight
  57.             );
  58.  
  59.             imagejpeg($resultImage,$target,$quality);
  60.  
  61.             imagedestroy($resultImage);
  62.             imagedestroy($finalWaterMarkImage);
  63.             unlink($wmTarget);
  64.             return true;
  65.         }
  66.         //изменение размеров watermark
  67.         function resize_png_image($img,$newWidth,$newHeight,$target){
  68.             $srcImage=imagecreatefrompng($img);
  69.             if($srcImage==»){
  70.                 return FALSE;
  71.             }
  72.             $srcWidth=imagesx($srcImage);
  73.             $srcHeight=imagesy($srcImage);
  74.             $percentage=(double)$newWidth/$srcWidth;
  75.             $destHeight=round($srcHeight*$percentage)+1;
  76.             $destWidth=round($srcWidth*$percentage)+1;
  77.             if($destHeight > $newHeight){
  78.                 // if the width produces a height bigger than we want, calculate based on height
  79.                 $percentage=(double)$newHeight/$srcHeight;
  80.                 $destHeight=round($srcHeight*$percentage)+1;
  81.                 $destWidth=round($srcWidth*$percentage)+1;
  82.             }
  83.             $destImage=imagecreatetruecolor($destWidth1,$destHeight1);
  84.             if(!imagealphablending($destImage,FALSE)){
  85.                 return FALSE;
  86.             }
  87.             if(!imagesavealpha($destImage,TRUE)){
  88.                 return FALSE;
  89.             }
  90.             if(!imagecopyresampled($destImage,$srcImage,0,0,0,0,$destWidth,$destHeight,$srcWidth,$srcHeight)){
  91.                 return FALSE;
  92.             }
  93.             if(!imagepng($destImage,$target)){
  94.                 return FALSE;
  95.             }
  96.             imagedestroy($destImage);
  97.             imagedestroy($srcImage);
  98.             return TRUE;
  99.         }
 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *