Univers Libre

Utiliser la fonction PHP imagerotate() sous Debian

Written on 21 July 2011, 00:00 EDT
Tags: Debian, php.

imagerotate est une fonction PHP qui, comme son nom l'indique, permet de tourner une image selon un angle. Cependant elle n'est disponible que si PHP a été compilé avec la version embarqué de la bibliothèque GD.

Sous Debian ce n'est pas le cas, car cette version est difficilement maintenable au niveau sécurité (cf le bug report Debian)

Pour contourner le problème, en cherchant un peu sur le net (ici par exemple), beaucoup de monde recompile PHP avec la version embarqué de GD. Ce n'est à mon avis pas la meilleure solution au niveau "maintenabilité".

Voici donc 2 autres possibilités.

Utiliser les dépôts dotdeb

Les dépôts dotdeb contiennent des versions plus récentes et/ou modifiés de paquets Debian pour serveurs LAMP. Le paquet php5 présent dans dotdeb est justement compilé avec la version embarqué de la bibliothèque.

Réécrire la fonction imagerotate()

Si vous n'avez besoin que de cette fonction et que vous n'avez pas envi d'utiliser la version embarqué de GD, il est tout à fait envisageable de réécrire la fonction en question :

readImage($temp_src);
      $imagick->rotateImage(new ImagickPixel($bgd_color?$bgd_color:'black'), $angle);
      $imagick->writeImage($temp_dst);
      //trigger_error( 'imagerotate(): could not write to ' . $file1 . ', original image returned', E_USER_WARNING );
      $result = imagecreatefromjpeg($temp_dst);
      unlink($temp_dst);
      unlink($temp_src);
      return $result;
  }
}
?>