Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/10/2009, 11:27
Avatar de JessicaTJ
JessicaTJ
 
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 4 meses
Puntos: 25
Redimensionar GIFs con fondos transparentes

Hola chicos, yo de nuevo, ahora con un problemita con la redimension de imagenes GIF transparentes.

Bueno, al redimensionar una imagen GIF con fondo transparente, este se pierde, encontre esto:

Código PHP:
<?php
$imagen 
imagecreatefromgif('imagen.gif');
$back imagecolorallocatealpha($imagen255255255127);
imagefill($imagen11$back);
?>
Pero no encuentro la manera de integrarlo al codigo que utilizo, una clase que encontre aki en los foros, vendria a ser esta:

Código PHP:
<?php
    
class Imagen {
          var 
$entrada "";
          var 
$width 0;
          var 
$height 0;
          var 
$tipo 0;

          function 
Imagen($ent) {
                   
$this->entrada $ent;
                   list(
$wid$hei$tip) = getimagesize($ent);
                   
$this->width $wid;
                   
$this->height $hei;
                   
$this->tipo $tip;
          }

          function 
getThumb($w$h$salida$opc false) {
                   
$ent $this->entrada;
                   
$tip $this->tipo;
                   
$wid $this->width;
                   
$hei $this->height;

                   if (
$w) {
                      
$newwidth $w;
                      
$newheight round(($hei $wid) * $newwidth);
                   }  elseif (
$h) {
                      
$newheight $h;
                      
$newwidth round(($wid $hei) * $newheight);
                   }
                   
// Cargar la imagen
                   
$thumb imagecreatetruecolor($newwidth$newheight);
                   if (
$tip == 1) {
                      
$source imagecreatefromgif($ent);
                   }  elseif (
$tip == 2) {
                      
$source imagecreatefromjpeg($ent);
                   }  elseif (
$tip == 3) {
                      
$source imagecreatefrompng($ent);
                   }

                   
// Redimensionar
                   
imagecopyresampled($thumb$source0000$newwidth$newheight$wid$hei);

                   
// Mostrar la nueva imagen
                   
if ($opc) return $thumb;
                   else return 
imagejpeg($thumb$salida);
          }

          function 
getNothumb($w$h$salida$opc false) {
                   
$ent $this->entrada;
                   
$tip $this->tipo;
                   
$wid $this->width;
                   
$hei $this->height;

                   if (
$h) {
                      
$newheight $h;
                      
$newwidth round(($wid $hei) * $newheight);
                   }  else if (
$w) {
                      
$newwidth $w;
                      
$newheight round(($hei $wid) * $newwidth);
                   }
                   
// Cargar la imagen
                   
$thumb imagecreatetruecolor($newwidth$newheight);
                   if (
$tip == 1) {
                      
$source imagecreatefromgif($ent);
                   }  elseif (
$tip == 2) {
                      
$source imagecreatefromjpeg($ent);
                   }  elseif (
$tip == 3) {
                      
$source imagecreatefrompng($ent);
                   }

                   
// Redimensionar
                   
imagecopyresampled($thumb$source0000$newwidth$newheight$wid$hei);

                   
// Mostrar la nueva imagen
                   
if ($opc) return $thumb;
                   else return 
imagejpeg($thumb$salida);
          }

          function 
getCorte($we$he$salida$opc false) {
                   
$img $this->entrada;
                   
$wid $this->width;
                   
$hei $this->height;
                   
$tip $this->tipo;

                   if (
$wid $we $hei $he) {
                      
$hp $hei;
                      
$wp round(($we $he) * $hp);
                   }  else {
                      
$wp $wid;
                      
$hp round(($he $we) * $wp);
                   }

                   
$lp round(($wid $wp) / 2);
                   
$tp round(($hei $hp) / 2);

                   
$thumb imagecreatetruecolor($we$he);
                   if (
$tip == 1) {
                     
$source imagecreatefromgif($img);
                    }  elseif (
$tip == 2) {
                     
$source imagecreatefromjpeg($img);
                   }  elseif (
$tip == 3) {
                     
$source imagecreatefrompng($img);
                   }

                   
imagecopyresampled($thumb$source00$lp$tp$we$he$wp$hp);

                   if (
$opc) return $thumb;
                   else return 
imagejpeg($thumb$salida);
          }
    }

    if (isset(
$_GET["img"])) {
       
$img = new Imagen($_GET["img"]);
       
$tip $_GET["tip"];
       
$w $_GET["w"];
       
$h $_GET["h"];

       
header("Content-type: image/jpeg");
       if (
$tip == 0) {
          
imagejpeg($img->getThumb($w$h""true));
       }  elseif (
$tip == 1) {
          
imagejpeg($img->getNothumb($w$h""true));
       }  elseif (
$tip == 2) {
          
imagejpeg($img->getCorte($w$h""true));
       }
    }
?>
Ke esta aki:
http://www.forosdelweb.com/f91/redim...on-php-665923/

Alguna idea de como integrar la funcion para que los GIFs con fondo transparentes los redimensione tambien con el fondo transparente?

De corazon de nuevo agradecere mil su ayuda