Le Monday 14 July 2008 16:58:48 Bulot Grégory, vous avez écrit :
> bonjour,
>
>
> j'utilise un gestionnaire de gallery photo qui utilise la fonction gd2
> imagerotate
>
> j'ai donc vérifier que php5-gd était bien installé, même après redémarrage
> apache, phpinfo me confirme bien la présence gd2, mais toujours le message
> (dans le flux du navigateur) signalant que la fonction imagerotate n'existe
> pas
>
> en regardant sur le Net chez ubuntu le problème était identique, et que
> cela était du fait que le paquet avait repris 'tel quel' depuis debian.
>
> La seule solution proposée était de recompiler 'à la main' php5-gd avec les
> directives qui vont bien.
>
> 1) y'a-t-il une solution 'plus standart' (qui suis les maj du paquet
> php5-gd 2) s'il n'existe que la compilation du paquet avec les options 'qui
> vont bien' : quelles sont ces option/directives ?
autre solution que la recompilation : "recréer" dans le script la fonction
imagerotate (pour des multiples de 90°, ce qui pour des galeries photos est
souvent suffisant) : voilà le bout de code que j'utilise (qui doit venir des
commentaires de la doc php, de mémoire...)
=== CODE :
if(!function_exists("imagerotate"))
{
function imagerotate($src_img, $angle)
{
if (!imageistruecolor($src_img))
{
$w = imagesx($src_img);
$h = imagesy($src_img);
$t_im = imagecreatetruecolor($w,$h);
imagecopy($t_im,$src_img,0,0,0,0,$w,$h);
$src_img = $t_im;
}
$src_x = imagesx($src_img);
$src_y = imagesy($src_img);
if ($angle == 180)
{
$dest_x = $src_x;
$dest_y = $src_y;
}
elseif ($src_x <= $src_y)
{
$dest_x = $src_y;
$dest_y = $src_x;
}
elseif ($src_x >= $src_y)
{
$dest_x = $src_y;
$dest_y = $src_x;
}
$rotate=imagecreatetruecolor($dest_x,$dest_y);
imagealphablending($rotate, false);
switch ($angle)
{
case 270:
for ($y = 0; $y < ($src_y); $y++)
{
for ($x = 0; $x < ($src_x); $x++)
{
$color = imagecolorat($src_img, $x, $y);
imagesetpixel($rotate, $dest_x - $y - 1, $x, $color);
}
}
break;
case 90:
for ($y = 0; $y < ($src_y); $y++)
{
for ($x = 0; $x < ($src_x); $x++)
{
$color = imagecolorat($src_img, $x, $y);
imagesetpixel($rotate, $y, $dest_y - $x - 1, $color);
}
}
break;
case 180:
for ($y = 0; $y < ($src_y); $y++)
{
for ($x = 0; $x < ($src_x); $x++)
{
$color = imagecolorat($src_img, $x, $y);
imagesetpixel($rotate, $dest_x - $x - 1, $dest_y - $y - 1,
$color);
}
}
break;
default: $rotate = $src_img;
};
return $rotate;
}
}
===/CODE
@+
JMB
--
JM Barbier - Solidev.org
tel : +33 (0) 6 86 14 77 29
Attachment:
signature.asc
Description: This is a digitally signed message part.