imagerotate
imagerotate($image, $angle, $background_color)
Renvoie une nouvelle image tournée d’un angle en degrés dans le sens inverse des aiguilles d’une montre. Pour les multiples de 90°, seules la largeur et la hauteur s’échangent. Pour les autres angles, l’image grandit et les coins découverts prennent la couleur de fond. En cas d’échec, elle renvoie false.
Paramètres
- $image – une image GD.
- $angle – l’angle en degrés dans le sens inverse des aiguilles d’une montre (négatif = dans le sens des aiguilles).
- $background_color – la couleur des coins découverts (pour des coins transparents, une couleur obtenue par
imagecolorallocatealpha).
Exemples
$photo = imagecreatefromjpeg("photo.jpg");
// de 90° dans le sens des aiguilles d’une montre (photo de téléphone avec EXIF Orientation = 6)
$rotated = imagerotate($photo, -90, 0);
echo imagesx($rotated) . "×" . imagesy($rotated); // 333×500
// en biais : l’image grandit, les coins seront blancs
$slanted = imagerotate($photo, 45, imagecolorallocate($photo, 255, 255, 255));
echo imagesx($slanted) . "×" . imagesy($slanted); // 588×589
Points d’attention
- Le sens est l’inverse de CSS (
rotate(90deg)tourne dans le sens des aiguilles d’une montre). Une photo avec EXIF Orientation 6 se tourne de −90 (ou 270), avec Orientation 8 de 90 et avec Orientation 3 de 180. - Un JPEG tourné est recompressé à l’enregistrement – la qualité baisse un peu.
Fonctions associées :
imageflip()
exif_read_data()
imagecreatefromjpeg()
imagecolorallocatealpha()