1

私は多くの解決策と真実を試しましたが、他に何をすべきかわからないところまで来ました。

次の画像はPNG( "cover.png")です。

cover.png

空白の楕円形になるので、実際には完全に透明です。PHPを使用して、この画像( "lapiz.jpg")に融合しようとしています。

lapiz.jpg

しかし、私がどれだけ最初の画像の明確なスペースを取得しようと試みたにもかかわらず、透明であり、代わりに完全に空白になり、溶けるはずの画像を覆っています。

今のところこれは私のコードです:

$img_user = 'fotos/lapiz.jpg';
$img_user_type = getImageInfo($img_user,'type');
$posX = 404;
$posY = 2;
$width = getImageInfo($img_user,'width');
$height = getImageInfo($img_user,'height');

$stamp = 'fotos/cover.png';

switch($img_user_type)
 {
    case 'jpeg':
        $img_user_create = imagecreatefromjpeg($img_user);
        break;
    case 'gif':
        $img_user_create = imagecreatefromgif($img_user);
        break;
    case 'png':
        $img_user_create = imagecreatefrompng($img_user);
        break;
}

$im = imagecreatefrompng($stamp);

imagealphablending($im, false);
imagesavealpha($im, true); 

imagecolortransparent($im, imagecolorallocate($im, 255, 255, 255));

imagecopymerge($img_user_create, $im, $posX, $posY, 0, 0, $width, $height, 100);

header('Content-Type: image/png');
imagepng($im);

ImageDestroy($im);
ImageDestroy($img_user_create);

私は何を間違っている可能性がありますか?

4

1 に答える 1

1

junihhは、imagemagickライブラリと以下のコードを使用してこれを解決しました。

$img1 = new Imagick('fotos/lapiz.jpg'); 
$img2 = new Imagick('fotos/cover.png'); 
$posX = 404; 
$posY = 2; 
$img2->compositeImage( $img1, imagick::COMPOSITE_DSTOVER, $posX, $posY ); 

header('Content-type: image/png'); 
echo($img2);
于 2012-10-29T19:08:02.707 に答える