sábado, 27 de septiembre de 2014

Creación de una imagen en PHP



La librería GD

Para crear una imagen en PHP, debe utilizar las funciones de la librería GD. Una librería es un archivo de extensión dll que contiene numerosas funciones PHP.

Para activar esta librería, en primer lugar hay que abrir el archivo PHP.ini (menú de configuración -> PHP) y quitar el punto y coma que está delante de la línea extension=php_gd2.dll, en la parte inferior del archivo. A continuación, reinicie el servidor Web (menú reiniciar).

Atención: si usted alberga su sitio Web en un proveedor de servicios, debe asegurarse de que esta librería está activa, porque no siempre es así.


1. Header

Header indica al navegador que la página PHP reenvía una imagen, y no una página HTML. También indica el tipo de imagen que se ha creado: JPG o PNG.

Si tiene una imagen con mucho color, como por ejemplo una foto, es mejor utilizar el formato JPG o bien el formato PNG, que gestiona la transpariencia.

El código PHP que debe insertar al inicio de la página es:

<?php
header("Content-type: imagen/png");
?>


2. Creación de una imagen vacía

Para crear una imagen vacía debe utilizar la función imagecreate(), que tiene dos parámetros: ancho y alto.

Por ejemplo:

<?php
header("Content-type: imagen/png");
$imagen = imagecreate(300,150);
?>

Este código crea una imagen de 300 x 150 píxeles. La función imagecreatecolor() equivale a imagecreate(), pero sin el límite de 256 colores.

La variable $imagen es un objeto que permite manipular una imagen. Este concepto se ha explicado en el capítulo referente a los archivos con la función fopen().


3. Creación y visualización de una imagen completa

Antes de mostrar la imagen, debe cambiar el color de fondo, pues de lo contrario será invisible. Para cambiar el color de fondo de la imagen, utilice la función imagecolorallocate(), que toma como parámetros el recurso y el código del color rojo, verde y azul.

Por ejemplo:

<?php
header("Content-type: image/png");
$imagen = imagecreate(300,150);
$color_fondo = imagecolorallocate($imagen, 0, 255, 0);
?>

Esta función colorea el fondo de la imagen y almacena este color en una variable ($color_fondo) para poder utilizarlo más adelante.

Para mostrar la imagen, utilice la función imagepng() tomando como parámetro el recurso. Para mostrar una imagen JPG, utilice la función imagejpeg(). Compruebe que Notepad++ lo codifica correctamente en ANSI; de lo contrario, no se podrá visualizar la imagen.

Por ejemplo:

<?php
header("Content-type: image/png");
$imagen = imagecreate(300,150);
$color_fondo = imagecolorallocate($imagen, 0, 255, 0);
imagepng($imagen);
?>

Inserte el código en un archivo imagen.php.

Esta imagen, representada con un rectángulo verde en otra página PHP, se visualizará nombrando la imagen como una imagen normal. Introduzca su nombre en el atributo src de la etiqueta img:

<img name="Imagen1" src="imagen.php" />

Para guardar la imagen en el disco, agregue en el segundo parámetro opcional la ruta y el nombre de la imagen en la función imagepng().

Por ejemplo:

<?php
$imagen = imagecreate(300,150);
$color_fondo = imagecolorallocate($imagen, 0, 255, 0);
imagepng($imagen, "fuente/imagen1.png");
?>

Observe que se ha eliminado la función header() y ya no se muestra la imagen, aunque esté guardada.

Para crear una imagen desde una imagen que ya existe, utilice la función imagecreatefromjpeg(), y tome como parámetros el nombre de la imagen de tipo JPG.

Por ejemplo, una imagen Koala.jpg ubicada en el mismo lugar que su página PHP:

<?php
header("Content-type: image/jpeg");
$imagen = imagecreatefromjpeg("Koala.jpg");
imagejpeg($imagen);
?>

Todo esto tiene la ventaja de que crea imágenes dinámicas, cuya forma y contenido pueden cambiar dependiendo de los datos incluidos en la base de datos.

Para terminar el script, agregue la función imagedestroy($resorigen), que libera del servidor la memoria que ha ocupado la imagen.

<?php
header("Content-type: image/jpeg");
$imagen = imagecreatefromjpeg("Koala.jpg");
imagejpeg($imagen);
imagedestroy($imagen);
?>



Espero haber ayudado en algo. Hasta la próxima oportunidad!







No hay comentarios:

Publicar un comentario en la entrada