Existe una maravillosa función en PHP que nos ayuda en esta tarea, es imagerotate()
resource imagerotate ( resource $image , float $angle , int $bgd_color [, int $ignore_transparent= 0 ] )
Pero existe un gran problema: esta función solo está disponible si PHP está compilado con la versión incrustada de la librería GD, que no es muy habitual. Para solucionarlo podemos rompernos la cabeza y girar a mano las imágenes, pero ¿para qué vamos a hacer tonterías? La solución (o una de ellas) es transponer cada píxel de la imagen hacia el lado que queremos rotar. Suponiendo que queremos rotar la imagen 90 grados en el sentido de las agujas del reloj: - generamos una imagen nueva que tenga las dimensiones de la original pero intercambiando la x por la y. - Empezando por la esquina superior izquierda, cogemos ese píxel y lo colocamos en la esquina superior derecha. - El segundo píxel superior de la izquierda (el que está a la derecha del anterior) lo colocamos en la esquina superior derecha, justo debajo del anterior... - y así sucesivamente... La función:
/**
* esta funcion sirve para rotar imagenes 90 grados en el sentido de la agujas del reloj
*
* @param string $origen
* @param string $destino
* @return bool
*/
function rotarImagenGif($origen, $destino){
//obtenemos las dimensiones de la imagen a girar
$tamano=GetImageSize($origen);
//tamaño de la imagen en ancho y largo
$tamano_x=$tamano[0];
$tamano_y=$tamano[1];
//creamos una imagen en memoria a partir de la imagen de origen
$origen=imagecreatefromgif($origen);
//creamos un liezo de imagen con las medidas transpuestas
$resultado=ImageCreateTrueColor($tamano_y,$tamano_x);
for( $x=0; $x<$tamano_x; $x++){
for($y = 0; $y < $tamano_y; $y++){
$distancia_x = $tamano_y - ($y+1);
$distancia_y = $x;
// copiamos cada pixel por separado de la imagen original a la nueva imagen con el lienzo rotado
imagecopy($resultado, $source, $distancia_x, $distancia_y, $x, $y, 1, 1);
}
}
//guardamos la imagen rotada en la ruta de destino
imagegif($resultado, $destino);
return true;
}
También puedes rotar imágenes con jQuery.