Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/10/2009, 11:56
Avatar de JessicaTJ
JessicaTJ
 
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 19 años, 9 meses
Puntos: 25
Respuesta: Editar script redimesionador de imagenes timthumb.php

Aki hay uno:

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, $source, 0, 0, 0, 0, $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, $source, 0, 0, 0, 0, $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, $source, 0, 0, $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));
       }
    }
?>
Y para las imagenes las llamas asi:
<img src="class.imagen.php?img=imagen.jpg&tip=2&w=100&h =100" />

Mas informacion aki:
http://www.forosdelweb.com/f91/redim...on-php-665923/

Espero te sirva