Foros del Web » Programando para Internet » PHP »

intento de aporte

Estas en el tema de intento de aporte en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/07/2011, 13:04
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 12 años
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

Etiquetas: intento
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:58.