|
|
PRATIQUE PHP |
|
|
|
Appliquer une rotation à une image via GD |
|
"Comment puis-je afficher une image choisie au hasard, penchée selon un angle également choisi au hasard, le tout dans un fond blanc ?"
(12/09/2005) |
|
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
La bibliothèque GD de PHP offre des fonctionnalités très puissantes,
mais également assez délicates à maîtriser. Ici le défi n'est
pas tant de choisir une image ou un angle au hasard, mais le
fond de l'image. En effet, une fois tournée, l'image sera dans
une surface rectangulaire agrandie par rapport à l'originale,
et les angles ajoutés prendront par défaut la couleur noire,
ce qui n'est pas toujours idéal.
Partons du principe que les fichiers sont toujours nommés sous
la forme pic1.jpg à pic25.jpg,
et que l'angle doit être compris en 0 et 45°. Voici notre code
:
<?php
header('Content-type: image/jpeg');
$fichier = "./img/pic".rand(1, 26).".jpg";
$image = imagecreatefromjpeg($fichier);
$angle = 360 - rand(1, 45);
$coul_blanc = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$rotation = imagerotate($image, $angle, $coul_blanc);
imagejpeg($rotation);
imagedestrot($rotation);
?>
La fonction
rand() sert à obtenir une valeur
au hasard entre deux limites rapidement, ce que nous faisons
pour le nom du fichier comme l'angle.
La couleur de fond ne peut malheureusement pas être définie
comme en HTML, avec une chaîne "white"
ou "#ffffff". Il nous faut définir
une couleur pour le fond de l'image, au travers d'une autre
fonction GD, imagecolorallocate().
Celle-ci prend les valeurs hexadécimales équivalentes à un code
HTML.
Enfin, nous indiquons l'entête HTTP à envoyer :
c'est d'un fichier JPeg qu'il s'agit ici. Ainsi, on pourra appeller
ce code directement depuis un code HTML de ce genre : <img
src="image-rotation.php" />.
|
|
|