2012-10-26 3 views
1

J'ai essayé de nombreuses solutions et la vérité et je suis arrivé au point où vous ne savez pas quoi faire d'autre.Fusionner un fichier PNG à un fichier JPG ou un autre fichier php

L'image suivante est un PNG ("cover.png"):

cover.png

Comme vous aurez un ovale blanc est vraiment complètement transparent. Avec PHP, je suis en train de fondre à cette image (« lapiz.jpg »):

lapiz.jpg

Cependant, en dépit de combien j'ai essayé de ne pas obtenir l'espace libre de la première image est transparente et à la place devient complètement vide, couvrant l'image qui devrait fondre.

Pour l'instant ceci est mon code:

$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); 

Ce que je peux faire mal?

+2

Avez-vous utilisé ImageMagick? Cela rend les choses comme ça assez faciles. –

+0

Recherche de Plz! http://stackoverflow.com/questions/2269363/put-png-over-a-jpg-in-php http://stackoverflow.com/questions/1394061/how-to-merge-transparent-png-with-image -using-php – Joey

+0

La première image optimisée: https://dl.dropbox.com/u/6576414/cover.png –

Répondre

1

junihh résolu cela en utilisant la bibliothèque imagemagick et le code ci-dessous:

$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); 
Questions connexes