Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/05/2013, 01:36
jontxu6
 
Fecha de Ingreso: mayo-2013
Mensajes: 6
Antigüedad: 11 años, 6 meses
Puntos: 0
No consigo rotar las imagenes correctamente

Muy buenas a todos.
Necesitaría que me hechasen una mano con la rotación de las imágenes en php.
Mi problema es que, cuando intento rotar una imagen (de tipo PNG) esta se redimensiona con cada giro y, las zonas que quedan vacías con esta redimensión, se ponen de color negro.

Espero que puedan ayudarme, porque llebo casi una semana trasteando por google y foros y no he conseguido resolverlo. Les dejo el código, por si desean probarlo.

Desde esta página cargo la imágen y los botones que indican la rotación de la misma

index.php
Código PHP:
<?php  session_start(); 
if(isset(
$_SESSION['grados'])){

}
else{
$_SESSION['grados']=0;
}

$_SESSION['src']='imagen.png';/*Aquí usen la imagen con trasparencias que deseen */ 
?>
<html>

<head>

</head>

<body>

<form action="cambio.php" method="post">
<input type="hidden" name="grados" value="<?php echo 30 ?>"/>
<input type="submit" value="sumar">
</form>

<form action="cambio.php" method="post">
<input type="hidden" name="grados" value="<?php echo -30 ?>"/>
<input type="submit" value="restar">
</form>

<img src="imagen.php" />

</body>
</html>
Desde esta, se incrementan o decrementan los grados que rotará la imagen, valiéndose de la variable de sesion grados

cambio.php
Código PHP:
<?php if(!isset($_SESSION)){
    
session_start();
}
$_SESSION['grados']=$_SESSION['grados']+$_POST['grados'];
echo 
$_SESSION['grados'];
?>
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=index.php">
</head>
<body>
</body>
</html>
Y en esta, es en la que se rota la imagen y la que redimensiona y elimina las transparencias.

imagen.php
Código PHP:
<?php if(!isset($_SESSION)){
    
session_start();
}

$loc=$_SESSION['src'];

$gra=$_SESSION['grados'];

$im=imagecreatefrompng($loc);        

$im imagerotate($im$gra0); 

imagealphablending($imtrue);

imagesavealpha($imtrue);

imagepng($im);
 
?>
Un saludo y gracias de antemano