miércoles, 10 de septiembre de 2014

Cambiar el tamaño de imágenes con PHP

Si usted está buscando la forma de como cambia el tamaño de las imágenes subidas al servidor fácilmente en miniatura o el tamaño que usted desee darle, en hora buena el siguiente script le permitirá cambiar fácilmente el tamaño de las imágenes usando PHP y la libreria GD. 

USO


Copiar y guardar la clase que nos permitirá realizar el cambio de  tamaño de la imagen en un archivo con el nombre de SimpleImage.php y listo, empezamos a usar la clase.

El Codigo: 

<?php
class SimpleImage {
 var $image;
  var $image_type;
   function load($filename) {
      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
         $this->image = imagecreatefrompng($filename);
      }
   }

   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {
         imagegif($this->image,$filename);        
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image,$filename);
      }  
      if( $permissions != null) {
         chmod($filename,$permissions);
      }
   }
  
   function output($image_type=IMAGETYPE_JPEG) {
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {
         imagegif($this->image);        
      } elseif( $image_type == IMAGETYPE_PNG ) {
         imagepng($this->image);
      }  
   }

   function getWidth() {
      return imagesx($this->image);
   }
   function getHeight() {
      return imagesy($this->image);
   }
   function resizeToHeight($height) {
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }

   function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getheight() * $ratio;
      $this->resize($width,$height);
   }

   function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getheight() * $scale/100;
      $this->resize($width,$height);
   }

   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;  
   }     
}

?>


El primer ejemplo siguiente carga un archivo denominado imagen.jpg y cambia su tamaño a 250 píxeles de ancho y 400 píxeles de alto y vuelva a guardarlo como picture2.jpg

<?php
include ( 'SimpleImage.php' ) ;
$image = new SimpleImage ( ) ;
$image -> load ( 'picture.jpg' ) ;
$image -> resize ( 250 , 400 ) ;
$image -> save ( 'picture2.jpg' ) ;
?>

Si desea cambiar el tamaño a un ancho especficado para mantener la relación de las dimensiones de la misma, entonces la secuencia de comandos puede calcular la altura requerida, sólo tiene que utilizar la función resizeToWidth.

<?php
include ( 'SimpleImage.php' ) ;
$image = new SimpleImage ( ) ;
$image -> load ( 'picture.jpg' ) ;
$image -> resizeToWidth(250) ;
$image -> save ( 'picture2.jpg' ) ;
?>


Es posible que desee escalar una imagen a un porcentaje especificado como la siguiente que cambia el tamaño de la imagen al 50% de su anchura y altura original.

<?php
include ( 'SimpleImage.php' ) ;
$image = new SimpleImage ( ) ;
$image -> load ( 'picture.jpg' ) ;
$image -> scale (50) ;
$image -> save ( 'picture2.jpg' ) ;
?>

Por supuesto, puedes hacer más de una cosa a la vez. El siguiente ejemplo creará dos nuevas imágenes con alturas de 200 píxeles y 500 píxeles.

<?php
include ( 'SimpleImage.php' ) ;
$image = new SimpleImage ( ) ;
 $image -> load ( 'picture.jpg' ) ;
$image -> resizeToHeight ( 500 ) ;
$image -> save ( 'picture2.jpg' ) ;
$image -> resizeToHeight ( 200 ) ;
$image->save('picture3.jpg' );
?>

La función output te permite enviar la imagen directamente al navegador sin tener que guardar el archivo. Su utilidad es para la generación de imágenes en miniaturas.

<? Php
header ( 'Content-Type: image/jpeg' ) ;
include ( 'SimpleImage.php' ) ;
 $image = new SimpleImage ( ) ;
 $image -> load ('picture.jpg') ;
$image -> resizeToWidth (150) ;
 $image -> output ( ) ;
 ?>

El siguiente ejemplo cambia el tamaño y guarda una imagen que se ha subido a través de un formulario.

<?php
if(isset($_POST['submit'])) {
 include('SimpleImage.php');
$image = new SimpleImage();
$image->load($_FILES['uploaded_image']['tmp_name']);
 $image->resizeToWidth(150);
$image->output(); }
 else {   ?>  
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="uploaded_image" />  
<input type="submit" name="submit" value="Upload" /> 
 </form>  
<?php } ?>

Tambien puedes descargar el codigo mas un ejemplo. Download Code




No hay comentarios.:

Publicar un comentario