Girar imágenes con PHP

PHP incluye la biblioteca GD, la cual permite manipular imágenes en diferentes formatos como GIF, PNG, JPEG, entre otros.

En la entrada anterior aprendimos a redimensionar imágenes, en esta ocasión aprenderemos a girar imágenes con la función imagerotate.

Habilitar biblioteca GD

La biblioteca GD está incluida al descargar PHP, para verificar que está habilitada debemos abrir el archivo de configuración php.ini y buscar la linea ;extension=gd, quitamos el punto y coma (;), guardamos el archivo y reiniciamos el servidor web.

Ejemplo con imagen JPEG

En este ejemplo debemos agregar la ubicación y nombre de la imagen que vamos a girar, así como el ángulo de giro en el sentido contrario de las agujas del reloj.

<?php

	$nombre_imagen = 'foto.jpg';
	$grados = -90;

	// Cabecera con tipo de contenido
	header('Content-type: image/jpeg');
	
	// Crea una nueva imagen a partir de un archivo
	$origen = imagecreatefromjpeg($nombre_imagen);
	
	// Rotar imagen
	$rotar = imagerotate($origen, $grados, 0);
	
	//Guardamos la imagen girada con calidad de 100
	imagejpeg($rotar, $nombre_imagen, 100);

	// Imprime la imagen
	imagejpeg($rotar);
	
	// Liberar la memoria
	imagedestroy($origen);
	imagedestroy($rotar);
?>

El resultado será una imagen con giro de -90 grados, remplazará la anterior y la imprimirá en pantalla.

Si quieres agregar valores positivos el ángulo serían 270° para que el resultado sea el mismo, recuerda que el giro es contrario a las agujas del reloj.

Usamos una imagen con extensión jpg, pero soporta otras extensiones, en caso de imágenes png debe cambiar la función imagecreatefromjpeg() a imagecreatefrompng() y imagejpeg() a imagepng(), así mismo se pueden cambiar las funciones para imágenes GIF, entra otras.

Cuando se trabaja con la función imagepng(), el tercer valor es el nivel de compresión en una escala de 0 (sin compresión) hasta 9.

Tutorial en vídeo:

Documentación de la biblioteca GD.