Se me presentó un problema trabajando con imágenes y no puedo solucionarlo en toda la tarde.
Tengo un gif que tiene una figura redonda con el resto transparente. Quiero usar esta imagen para marcar otra más grande, en cualquier formato.
El código es algo así:
Código PHP:
$wm = imagecreatefromgif($file);
//AQUI ESTA EL PROBLEMA
//------------------------------------
if($rotation <> 0 and is_numeric($rotation))
$wm = imagerotate($wm, $rotation, -1);
$wm_w = @imagesx($wm);
$wm_h = @imagesy($wm);
//------------------------------------
/*
//Sólo defino la posicion de la marca de agua
$posx = ($posx === false) ? ($this->rw - $wm_w) / 2 : intval($posx);
$posy = ($posy === false) ? ($this->rh - $wm_h) / 2 : intval($posy);
if($posx < 0) $posx = ($this->rw - $wm_w) + $posx;
if($posy < 0) $posy = ($this->rh - $wm_h) + $posy;
*/
imagecopy($img_fuente, $wm, $posx, $posy, 0, 0, $wm_w, $wm_h);
EDITO: El rombo blanco que contiene al redondo si conserva su transparencia. Otra cosa es que esto sólo me sucede con imágenes gif. Con jpg o png no.
Al final, este es mi problema simplificado:
Código PHP:
$wm = imagecreatefromgif("wm.gif");
$wm = imagerotate($wm,45,-1);
imagegif($wm);
Un saludo,