[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: etch - php5-gd : absence fonction imagerotate : Fatal error: Call to undefined function imagerotate()



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.


Reply to: