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' ? 1 : 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($im, false);
imagesavealpha($im, true);
imagecopymerge($img_user_create, $im, $posX, $posY, 0, 0, $width, $height, 100);
header('Content-Type: image/png');
imagepng($im);