0

imagecopymergeで画像を作成しているのですが、上に重ねる画像はPNGですが透過部分は真っ白です。透明性を有効にするにはどうすればよいですか?

$image = imagecreatefromjpeg($this->getFile());

    $size = getimagesize($this->getFile());  

    $watermark = imagecreatefrompng('../watermark.png');
    $watermark_width = imagesx($watermark);  
    $watermark_height = imagesy($watermark);

    $dest_x = $size[0] - $watermark_width - 10;  

    $dest_y = $size[1] - $watermark_height - 5; 

    //die($watermark_width);

    $thumb_image = imagecreatetruecolor($this->getThumbWidth(), $this->getThumbHeight());

    imagealphablending($thumb_image,true);
    imagealphablending($image,true);

    imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);  

    imagecopyresampled( $thumb_image, $image, 0, 0, 0, 0, $this->getThumbResizeWidth(), $this->getThumbResizeHeight(), $this->getWidth(), $this->getHeight() );
    imagejpeg( $thumb_image, $this->getThumbDestination(), $this->getThumbQuality() );

    imagedestroy($thumb_image);
    imagedestroy($image);
4

2 に答える 2

1

だから私は最終的に解決策を見つけました。を使用してimagecopy()います。

これが私を正しい方向に動かした記事です。

それにはかなりの数時間の調査が必要でした。

于 2013-01-11T03:07:31.567 に答える
0

使用するimagecolortransparent()

詳細はこちら

編集:より良い解決策はここにあります:

https://stackoverflow.com/a/313103/1533203

于 2013-01-10T20:50:27.497 に答える