Foros del Web » Programando para Internet » PHP »

Fundir una imagen PNG a un JPG u otro

Estas en el tema de Fundir una imagen PNG a un JPG u otro en el foro de PHP en Foros del Web. Hola señores He tratado muchas soluciones y la verdad ya llegué al punto donde no se qué más hacer. La siguiente imagen es un PNG ...
  #1 (permalink)  
Antiguo 26/10/2012, 15:49
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Fundir una imagen PNG a un JPG u otro

Hola señores

He tratado muchas soluciones y la verdad ya llegué al punto donde no se qué más hacer.

La siguiente imagen es un PNG ("cover.png"):



Como verán tiene un espacio ovalado en blanco que realmente es completamente transparente. Con PHP estoy tratando de fundirla a esta imagen ("lapiz.jpg"):



Para poder conseguir esto:



Sin embargo, pese a lo mucho que he tratado no consigo que el espacio transparente de la primera imagen quede transparente y en lugar de eso llega completamente en blanco, tapando la imagen a la que se debe fundir.

Por ahora esto es mi código:

Código PHP:
function getImageInfo ($img,$typ)
{
        
$inf getimagesize($img);
        
$mim explode('/',$inf['mime']);
        
        
$rtn = array(
            
'image' => $mim[0] == 'image' 0,
            
'type' => $mim[1],
            
'width' => $inf[0],
            
'height' => $inf[1],
            
'bits' => $inf['bits'],
            
'channels' => $inf['channels']
        );
           
        return( 
$rtn[$typ] );
}

$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($imfalse);
imagesavealpha($imtrue); 

imagecopymerge($img_user_create$im$posX$posY00$width$height100);

header('Content-Type: image/png');
imagepng($im); 
¿Qué puedo estar haciendo mal?
__________________
JuniHH
- Mi blog
- Mi portafolio

Última edición por junihh; 26/10/2012 a las 15:58
  #2 (permalink)  
Antiguo 29/10/2012, 18:41
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: Fundir una imagen PNG a un JPG u otro

Cada vez que dejo preguntas complejas como esta siempre sucede lo mismo: NUNCA RECIBO RESPUESTAS O POSIBLES IDEAS.

Como no recibí ayuda, dejé la misma pregunta en StackOverflow y como era de esperar recibí la solución que necesitaba. NO NECESITABA me dijeran EXACTAMENTE QUE HACER, sólo UNA PISTA para salir del tranque.

Para otros usuarios de este foro que se encuentren en la misma situación que expuse en este post acá dejo la solución: Usar ImageMagick.

Código PHP:
$img1 = new Imagick('fotos/lapiz.jpg'); 
$img2 = new Imagick('fotos/cover.png'); 
$posX 404
$posY 2
$img2->compositeImage$img1imagick::COMPOSITE_DSTOVER$posX$posY ); 

header('Content-type: image/png'); 
echo(
$img2); 
Acá el link al post en StackOverflow: http://stackoverflow.com/questions/1...g-or-other-php
__________________
JuniHH
- Mi blog
- Mi portafolio

Etiquetas: jpg, png
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:28.