Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/12/2008, 10:04
Avatar de Snd234
Snd234
 
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 19 años, 5 meses
Puntos: 2
Respuesta: Redimensionar imagen + upload php

Aquí te dejo una clase que desarrolle para el mismo propósito que necesitas, espero te sirva:

Código PHP:
<?php

    
/**
     * Thumbnail
     * 
     * Crea una miniatura de una imagen y la guarda en un formato especifico
     * 
     * @package 
     * @author Snd234
     * @copyright 2008
     * @version 1.0
     * @access public
     */
    
class Thumbnail {
        
// informacion de la miniatura
        
private $thumbnail;
        private 
$thumbnail_width;
        private 
$thumbnail_height;
        
        
// informacion de la imagen original
        
private $image;
        private 
$image_width;
        private 
$image_height;
        private 
$image_type;
        
        public 
$error;
        
        
/**
         * Thumbnail::__construct()
         * 
         * @param mixed $source
         * @return
         */
        
public function __construct($source) {
            
$image_info = getimagesize($source);
            
            if(
$image_info) {
                
$this->image_width = $image_info[0];
                
$this->image_height = $image_info[1];
                
$this->image_type = $image_info[2];
                
                switch(
$this->image_type) {
                    case 
IMAGETYPE_JPEG: {
                        
$this->image = imagecreatefromjpeg($source);
                        break;
                    }
                    
                    case 
IMAGETYPE_GIF: {
                        
$this->image = imagecreatefromgif($source);
                        break;
                    }
                    
                    case 
IMAGETYPE_PNG: {
                        
$this->image = imagecreatefrompng($source);
                        break;
                    }
                    
                    default: {
                        
$this->error = "Formato no soportado";
                        break;
                    }
                }
            } 
            else {
                
$this->error = "Formato invalido";
            }
        }
        
        
/**
         * Thumbnail::resize()
         * 
         * @param mixed $width
         * @param integer $height
         * @return void
         */
        
public function resize($width, $height = 0) {
            
$this->thumbnail_width = $width;
            
            if(
$height == 0) {
                
$this->thumbnail_height = $width;
            } else {
                
$this->thumbnail_height = $height;
            }
            
            
$this->thumbnail = imagecreatetruecolor($this->thumbnail_width, $this->thumbnail_height);
            
            
imagecopyresampled(
                
$this->thumbnail, $this->image, 0, 0, 0, 0,
                
$this->thumbnail_width, $this->thumbnail_height,
                
$this->image_width, $this->image_height
            
);
        }
        
        
/**
         * Thumbnail::save_jpg()
         * 
         * @param mixed $dir
         * @param mixed $name
         * @param integer $quality
         * @return
         */
        
public function save_jpg($dir, $name, $quality = 95) {
            
$path = $dir . $name . image_type_to_extension(IMAGETYPE_JPEG);
            
imagejpeg($this->thumbnail, $path, $quality);
            
            
imagedestroy($this->thumbnail);
        }
        
        
/**
         * Thumbnail::save_gif()
         * 
         * @param mixed $dir
         * @param mixed $name
         * @return
         */
        
public function save_gif($dir, $name) {
            
$path = $dir . $name . image_type_to_extension(IMAGETYPE_GIF);
            
imagegif($this->thumbnail, $path);
            
            
imagedestroy($this->thumbnail);
        }
        
        
/**
         * Thumbnail::save_png()
         * 
         * @param mixed $dir
         * @param mixed $name
         * @return
         */
        
public function save_png($dir, $name) {
            
$path = $dir . $name . image_type_to_extension(IMAGETYPE_PNG);
            
imagegif($this->thumbnail, $path);
            
            
imagedestroy($this->thumbnail);
        }
    }
    
?>
Y su funcionamiento es el siguiente:

Código PHP:
<?php

    
include("Thumbnail.class.php");

    if(isset(
$_FILES["imagen"])) {
        
$temp = $_FILES["imagen"]["tmp_name"];
    
        
$thumb = new Thumbnail($temp);
        if(
$thumb->error) {
            echo 
$thumb->error;
        } else {
            
$thumb->resize(80);
            
$thumb->save_jpg("", "imagen");
        }
    }

?>

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="imagen" />
    <input type="submit" value="Enviar" />
</form>
El formulario tiene un campo file llamado imagen, entonces cuando se envía, se evalúa si el campo enviado existe, si es así, se obtiene el nombre temporal con el que esta guardado. Luego se crea la instancia de la clase Thumbnail y se le pasa como parametro la ruta del archivo subido. Si ocurrio algun error, como que el archivo no fuera una imagen, entonces mostrara el error, sino, entonces redimensionara la imagen en las dimensioens especificadas y luego podras guardar la nueva imagen en algun formato especifico, en este caso se guardara como una imagen JPEG en el mismo directorio del script actual con el nombre imagen, la extension la asignara automaticamente dependiendo del formato en que se quiera guardar.
__________________
KIBIT.cl