PHP - Ayuda con rotación de imágenes

 
Vista:

Ayuda con rotación de imágenes

Publicado por Jon (5 intervenciones) el 08/05/2013 08:44:32
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?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

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php if(!isset($_SESSION)){
    session_start();
}
 
$loc=$_SESSION['src'];
 
$gra=$_SESSION['grados'];
 
$im=imagecreatefrompng($loc);
 
$im = imagerotate($im, $gra, 0);
 
imagealphablending($im, true);
 
imagesavealpha($im, true);
 
imagepng($im);
 ?>


Un saludo y gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder