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
signature.asc
Description: This is a digitally signed message part.