image-jpg

Bueno, hace unos días publiqué una entrada para redimensionar imágenes con PHP usando Imagick, como muchos servidores no disponen de esta libreria y es problable que no podamos instalarla, voy a mostraros como redimensionar imágenes usando la librería GD que es la más común y que probablemente tengamos instalada en nuestro servidor.

Como no tengo tiempo de ponerme a explicar todo, lo que voy a hacer es publicaros una clase con todas las funciones necesarias, compatible con archivos png, jpg y gif y con soporte para transparencias. Cualquier duda me la podéis comentar a través de los comentarios.

La clase la he llamado Image (en un alarde de originalidad) y contiene los siguientes métodos:

public function Image($src)

Constructor. Crea una imágen a partir del $src especificado

public function loadImage($src)

Carga una imágen a partir del $src especificado.

public function setQuality($q)

0 <= $q <= 100. Establece la calidad de la imágen a generar. Solo aplicable a imágenes jpg

public function setOutput($type)

Establece el tipo de salida de la imágen. Por defecto es el mismo tipo que la imágen de entrada. Valores aceptados: “image/jpeg”, “image/gif”, “image/png”

public function resize($width = "", $height = "")

Reescala la imàgen cargada previamente para que encaje en un rectángulo de $width x $height sin perder las proporciones originales.

public function printImage()

Imprime por el canal estándar la imagen resultante con el header específico.

public function saveImage($saveFile)

Guarda la imágen en el archivo especificado por $saveFile.

public function setWaterMark($waterSrc, $left, $top, $right = "", $bottom = "")

Añade la imagen especificada en la ruta $waterSrc a la imagen cargada. en la posición $left – $top. En caso de especificar $right o $bottom sobreescriben los valores de $left y $top.

Así pues para generar una imagen y reescalarla tendremos que hacer lo siguiente:

include ("Image.php");
$im = new Image(PATH_TO_IMAGE);
$im->resize(200, 200);
$im->printImage();

Si queremos añadirle una marca de agua simplemente tendremos que añadir la llamada a la función setWaterMark.

$im->setWaterMark(PATH_TO_WATERMARK, 0, 0, 20, 20);

Y si queremos guardar la imágen en el disco duro:

$im->saveImage(PATH_TO_SAVE);

Podéis ver un ejemplo del resultado aquí

Ver código fuenteDescargar código de ejemplo.

El código de la clase Image lo podéis encontrar en la carpeta src. Los ficheros test-image y test-watermark muestran el funcionamiento de la clase Image

  One Response to “Escalando imágnes con PHP (GD Graphics Library)”

  1. [...] EDIT: Para ver este mismo procedimiento con la libreria GD visita el post Escalando imágenes con PHP (GD Graphics Library) [...]

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
© 2022 David Rojo González | Tecnología, programación web, SEO Suffusion theme by Sayontan Sinha