rotar imagenes con php - Blog Juegosocio

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…

rotar imagenes con php

Por mameyugo el 02.Jun.2009 facebook_16 twitter_16 delicious_16

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.

Tags: php, gd, Categorías: PHP, programacion, Comentarios: 5, Lecturas: 45

Comentarios


gravatar
nico
21.Jul.2009
No sabes como puedo hacer para guardar la imagen rotada dentro de un campo blob de mi mysql o en un archivo temporal?
Mi intencion es hacer lo mismo que hace facebook para rotar imagenes.
Saludos.

gravatar
07.Aug.2009

para almacenar imagenes en mysql sigue este enlace: imagenes en mysql


gravatar
nico
27.Aug.2009
Hola mamei. Gracias por responder.
Lo que yo quiero es rotar la imagen pero nunca trabajo con archivos reales sino con codigo almacenado en la db.
$content = mysql_fetch_array($result);
$source = imagecreatefromstring($content);
header('Content-type: image/jpeg');
$rotate = imagerotate($source, $degrees, 0);
hasta aca funciona todo bien pero no se como guardar estos cambios en mi mysql.

gravatar
31.Aug.2009
una vez rotada la imagen aplicale el base 64 encode y guarda los cambios en la base de datos

gravatar
31.Aug.2009
vale, falta un paso, despues de rotada, lo mas facil es salvar el archivo, y a partir de ahi como en el enlace de arriba

Escribe un comentario

Nick
Email
URL