En este aporte http://www.forosdelweb.com/f68/aport...agenes-912637/ de abimaelrc, existe una clase genial para el trabajo con imágenes, o al menos los métodos más usados, cambiar tamaño, escalar, salvar...
resulta que el método que hace el cambio de tamaño si se trata de un gif con transparencia, el mismo pierde la transparencia y en su lugar aparece el fondo negro, hice una modificación a dicho método que resuelve esto... y quería compartirlo con todos.
Código PHP:
public function resize($width, $height)
{
$newImage = imagecreatetruecolor($width, $height);
if($this->getImageType() == 'image/png' && $this->_transparent === true)
{
imagealphablending($newImage, false);
imagesavealpha($newImage, true);
$transparent = imagecolorallocatealpha($newImage, 255, 255, 255, 127);
imagefilledrectangle($newImage, 0, 0, $width, $height, $transparent);
imagecopyresampled($newImage, $this->_image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
}
else if($this->getImageType() == 'image/gif' && $this->_transparent === true)
{
$transcolor=imagecolortransparent($this->_image);
if($transcolor!=-1)
{
$trnprt_color = imagecolorsforindex($this->_image, $transcolor);
$trnprt_indx = imagecolorallocatealpha($newImage, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue'], $trnprt_color['alpha']);
imagefill($newImage, 0, 0, $trnprt_indx);
imagecolortransparent($newImage, $trnprt_indx);
}
imagecopyresized($newImage, $this->_image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
}
else
imagecopyresampled($newImage, $this->_image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->_image = $newImage;
}