簡體   English   中英

PHP GD-不透明的水印圖像

[英]PHP GD - Watermark image with opacity

我正在嘗試使用PHP和GD圖像庫向圖像添加水印。 我可以使用正確的不透明度設置在指定位置應用水印。

問題是我的水印本身具有透明的背景。 當我嘗試將此水印應用於圖像時,我得到了黑色背景。

被應用水印的圖像是jpeg。 這可能是問題嗎? 如果是這樣,我如何將jpeg轉換為支持透明度的格式,應用水印,然后再轉換回去?

這是我目前擁有的關鍵代碼。

// Determine image size and type
$size = getimagesize($this->image_path);
$size_x = $size[0];
$size_y = $size[1];
$image_type = $size[2]; // This is always a JPEG

// load source image
$image = $this->ImageCreateFromType($image_type, $this->image_path);

// Determine watermark size and type
$wsize = getimagesize($watermark_path);
$watermark_x = $wsize[0];
$watermark_y = $wsize[1];
$watermark_type = $wsize[2]; // This is typically a PNG

// load watermark
$watermark = $this->ImageCreateFromType($watermark_type, $watermark_path);

$dest_x = $this->setX($size_x, $watermark_x);
$dest_y = $this->setY($size_y, $watermark_y);

imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_x, $watermark_y, $this->opacity);

雖然不是很相關,但是這里是ImageCreateFromType函數的代碼

function ImageCreateFromType($type,$filename) {
 $im = null;
 switch ($type) {
   case 1:
     $im = ImageCreateFromGif($filename);
     break;
   case 2:
     $im = ImageCreateFromJpeg($filename);
     break;
   case 3:
     $im = ImageCreateFromPNG($filename);
     imagealphablending($im, true);
     imagesavealpha($im, true);
     break;
  }
  return $im;
}

閱讀有關imagecolortransparent()函數的信息: http : //php.net/manual/zh/function.imagecolortransparent.php

您可能還想看一下這個問題: 使用PHP的GDlib imagecopy重新采樣時,能否保留PNG圖像的透明度?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM