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 sólo 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 que vamos a hacer tonterias. la solución (o una de ellas), es transponer cada pixel 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 pixel , y lo colocamos en la esquina superior derecha. - el segundo pixel superior de la izquierda (el que esta a la derecha de el anterior), lo colocamos en la esquina superior derecha, justo debajo del anterior... - y asi sucesivamente... la funcion:
/**
* 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;
}
tambien puedes rotar imagenes con jQuery.