Newsgroup: it.comp.www.php
Titolo: Upload di immagini creazione automatica thumbnail e altro

Ciao a tutti!
Come va la domenica?
Avrei bisogno di un aiuto consiglio...
Sto cercando uno script che mi permetta di creare delle categorie e
all'interno di esse inserire degli articoli con la possibilità di fare
l'upload di immagini, però le immagini devono essere automaticamente
trasformate in thumbnail delle dimensioni preimpostate...
Grazie in anticipo e a presto
Zeta

Zeta ha scritto:

Guarda su 
phpbuilder.com
, c'e' qualcosa a riguardo.
-- 
Spirito Libero
"La verità non sta in un solo sogno ma in molti sogni!"
(Le mille e una notte)


utilizzando le GD 1.6
<?
   function ImageCopyResampleBicubic ($dst_img, $src_img, $dst_x, 
$dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h)
    {
        /*
        port to PHP by John Jensen July 10 2001 -- original code (in C, 
for the PHP GD Module) by 
jern...@fairytale.se
        */
        for ($i = 0; $i < imagecolorstotal($src_img); $i++)
        {
            // get pallete. Is this algoritm correct?
            $colors = ImageColorsForIndex ($src_img, $i);
            ImageColorAllocate ($dst_img, $colors['red'], 
$colors['green'], $colors['blue']);
       }
        $scaleX = ($src_w - 1) / $dst_w;
        $scaleY = ($src_h - 1) / $dst_h;
        $scaleX2 = $scaleX / 2.0;
       $scaleY2 = $scaleY / 2.0;
        for ($j = $src_y; $j < $dst_h; $j++)
        {
            $sY = $j * $scaleY;
            for ($i = $src_x; $i < $dst_w; $i++)
            {
               $sX = $i * $scaleX;
                $c1 = ImageColorsForIndex ($src_img, ImageColorAt 
($src_img, (int) $sX, (int) $sY + $scaleY2));
              $c2 = ImageColorsForIndex ($src_img, ImageColorAt 
($src_img, (int) $sX, (int) $sY));
                $c3 = ImageColorsForIndex ($src_img, ImageColorAt 
($src_img, (int) $sX + $scaleX2, (int) $sY + $scaleY2));
                $c4 = ImageColorsForIndex ($src_img, ImageColorAt 
($src_img, (int) $sX + $scaleX2, (int) $sY));
               $red = (int) (($c1['red'] + $c2['red'] + $c3['red'] + 
$c4['red']) / 4);
                $green = (int) (($c1['green'] + $c2['green'] + 
$c3['green'] + $c4['green']) / 4);
                $blue = (int) (($c1['blue'] + $c2['blue'] + $c3['blue'] 
+ $c4['blue']) / 4);
               $color = ImageColorClosest ($dst_img, $red, $green, $blue);
               ImageSetPixel ($dst_img, $i + $dst_x, $j + $dst_y, $color);
            }
        }
    }
?>
Và utilizzata all'incirca così:
$src_img=ImageCreateFromjpeg($nomefile);
$X=ImageSX($src_img);
$Y=ImageSY($src_img);
$dst_img=ImageCreate($dx,$dy); /*$dx,$dy sono le dim. della thumb*/
ImageCopyResampleBicubic($dst_img,$src_img,0,0,0,0,$dx,$dy,$X,$Y);
Imagejpeg($dst_img,$thumb_nomefile,35); /* 35 è la qualità del jpg */
Imagedestroy($dst_img);
Imagedestroy($src_img);
Funziona bene con immagini non giganti, io lo utilizzo ad esempio su una 
pagine per avere l'anteprima di 25 immagini di dimensione 350x350 avendo 
il risultato in modo abbastanza veloce.
Se le dimensioni crescono il tempo per il resize cresce in modo 
quadratico (e considerando che non è eseguito in C, ma in PHP, questo è 
un problema)
ciao
Alesi_27

 trasformate in thumbnail delle dimensioni preimpostate...
Non so se esistano script già fatti.
Quello che vuoi fare non è molto complesso.
Per creare la miniatura di un'immagine devi utilizzare le librerie grafiche
gd (se gd2 è meglio).
Ciao
Marco

grazie a tutti per l'aiuto :=)
Zeta

 
le GD2 però non supportano GIF (ma c'è PNG che - Internet Explorer a 
parte - è meglio).
ciao
Alesi_27