Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/07/2011, 13:04
Avatar de iviamontes
iviamontes
 
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
intento de aporte

Hola a todos, espero le sirva a alguien.

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($newImagefalse);
      
imagesavealpha($newImagetrue);
      
$transparent imagecolorallocatealpha($newImage255255255127);
      
imagefilledrectangle($newImage00$width$height$transparent);
      
imagecopyresampled($newImage$this->_image0000$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($newImage00$trnprt_indx);
                 
imagecolortransparent($newImage$trnprt_indx);                 
            }
            
imagecopyresized($newImage$this->_image0000$width$height$this->getWidth(), $this->getHeight());  
        }
        else
      
imagecopyresampled($newImage$this->_image0000$width$height$this->getWidth(), $this->getHeight());
         
$this->_image $newImage;
  } 
http://www.forosdelweb.com/f68/aport...7/#post3917171
__________________
aconcaguaestudio.com