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