Programación en PHP
/

Crear una imagen con PHP

Es necesario tener activada la librería GD. Una vez esté en funcionamiento es preciso utilizar la función header para indicar al navegador que la página PHP lo que está reenviando es una imagen y no una página HTML. Además, indica el tipo de imagen que se ha creado: bien jpg o png.

Si la imagen tiene bastante color, una foto por ejemplo, es mejor utilizar el formato jpg pero si queremos, además, gestionar la transparencia utilizaremos un formato png. Para crear una imagen debemos insertar al inicio del código PHP lo siguiente:

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

Creación de una imagen vacía

La función imagecreate permite crear una imagen vacía. Esta función tiene dos parámetros que son el ancho y el alto en pixeles.

Ejemplo:

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

Este código crea una imagen de 200 x 250 pixeles. Hemos utilizado la función imagecreate pero también se puede utilizar imagecreate-color con la diferencia que la segunda limita a 256 colores.  De cualquier forma antes de pretender mostrar la imagen debemos cambiarle su color porque hasta este instante se muestra invisible. Utilizaremos la función imagecolorallocate que toma como argumento el recurso (el objeto que representa la imagen, $imagen), y el código del color rojo, verde, azul. Para mostrar la imagen utilizamos la función imagepng con un único argumento.

Ejemplo:

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

Dejaremos almacenado este código en un fichero con nombre: imagen.php

Esta imagen se puede mostrar nombrando la imagen como una imagen normal. Para ello introducimos su nombre en el atributo src de la etiqueta img de HTML.

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Esta es la imagen</h1>
    <img src="imagen.php" alt="Mi_imagen">
</body>
</html>

Ejecutar ejemplo

Guardar una imagen creada


Si lo que queremos es guardar la imagen y no mostrarla, ya no hará falta la función header pero tendremos que añadir la ruta y el nombre que queremos poner a la imagen.

<?php
    $imagen = imagecreate (300,300); //cuadrado de 300 x 300 píxeles
    $color_fondo = imagecolorallocate ($imagen, 255, 0, 0); //rgb color rojo
    imagepng ($imagen, 'fuente/cuadrado.png'); //la imagen se archiva en la ruta dada
?>

ver imagen archivada

Crear una imagen partiendo de otra ya creada


La nueva imagen se crea gracias al uso de la función imagecreatefromjpg que tendrá un único parámetro, la url de la imagen que ya existe. La ventaja generar una nueva imagen tomando de base una existente es que este proceso puede dinamizarse y que el comportamiento dependa de los datos incluidos en una base de datos, por ejemplo.

Ejemplo: ubicamos una imagen en la ruta relativa ‘images/koala.jpg’ y generemos el fichero ‘koala.php’. Al código además se incluye la función imagedestroy para liberar al servidor de la memoria ocupada con la creación de la imagen.

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

En el caso de querer trabajar con imágenes en formato bmp las funciones que utilizaremos son: imagebmp() e imagecreate-frombmp() que se utilizan de la misma forma que imagejpeg() o image-createfromjpeg(). En este caso hay que modificar el argumento de la función header, para sustituir jpeg por bmp.

Trabajar con la resolución de la imagen


Si queremos conocer o fijar la resolución de la imagen, existe la función imageresolution.  Los parámetros que utiliza son el propio recurso (la imagen) y las resoluciones x e y en DPI (por defecto es 96×96).

La sintaxis para su utilización es:

$valor_devuelto = imageresolution ($recurso, $resolucion_x, $resolucion_y);

Ejemplo de aplicación: guardamos en resolucion.php el siguiente código.

<?php 
   $imagen = imagecreate(300,150); //creamos una imagen
   $color_fondo = imagecolorallocate ($imagen, 0, 255, 0); //aplicamos color verde
   imagepng ($imagen, "fuente/imagen2.png"); //guardamos en archivo
      print_r (imageresolution ($imagen)); 
?>

El resultado del uso de la función print_r de PHP es que se imprime el contenido de un array. En él, la posición 0 corresponde a la resolución x y la posición 1 la y:

Array ( [0] => 96 [1] => 96 )

 

Deja una respuesta