PHPとGDイメージライブラリを使用してイメージにウォーターマークを追加しようとしています。正しい不透明度の設定で指定した場所にウォーターマークを適用できます。PHP GD - 不透明度のあるウォーターマークイメージ
問題は、透かし自体に透明な背景があることです。このウォーターマークをイメージに適用しようとすると、黒い背景が表示されます。
ウォーターマークが適用されている画像はjpegです。これが問題だろうか?もしそうなら、透明性をサポートするフォーマットにjpegをどのように変換すればよいでしょうか?
これは私が現時点で持っている重要なコードビットです。あなたも、このを見てみたいことがありhttp://php.net/manual/en/function.imagecolortransparent.php
:
// 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;
}