Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Problema con le GD

  1. #1

    Problema con le GD

    Sto usando questo script per ridimensionare delle immagii:

    Codice PHP:
    <?
    // Definisco con una costante
    // il per corso fisico alla cartella che contiene le immagini
    define('IMAGE_BASE''./immagini'); 
    //Definisco le costanti per le dimensioni standard
    //dell'immagine di errore (immagine generata con GD)
    define('MAX_WIDTH'150);             
    define('MAX_HEIGHT'150);
    //Definisco la costante che mi indica la percentuale di ridimensionamento immagine
    define('NEW_SIZE'75);
    //Definisco la costante per l'immagine (fisica) da visualizzare in caso di errore
    define('GIF_ICON''./immagini/error.gif');

    function 
    Thumbnalizer ($image_file)
    {

    //Costruisco il percorso al file immagine
    //La variabile $image_file contiene il nome del file
    //completo di estensione. Es: pippo.jpg
    $image_path IMAGE_BASE "/filippo.jpg";
    // Controllo che il file esiste e sia accessibile
    //se non lo fosse passo all'header della pagina
    //il target GIF e uso le funzioni fpassthru(per visualizzare) ed fopen
    //(per aprire) il file immagine di errore
        
    if (!filesize($image_path) || !is_readable($image_path)){
            
    header("Content-type: image/gif");
            
    fpassthru(fopen(GIF_ICON'rb'));
            exit;
        }
    //Inizializzo le variabili che mi serviranno per
    //Calcolare le nuove dimensioni dell'immagine
    //E la variabile che conterrà l'immagine creata
    $new_size NEW_SIZE;
    $img null;
    //Estraggo l'estensione del file dalla stringa path
    //in base a tale estensione inizializzo tramite le chiamte
    //alle funzioni GD apposite la variabile immagine
    $ext strtolower(end(explode('.'$image_path)));
    if (
    $ext == 'jpg' || $ext == 'jpeg') {
        
    $img imagecreatefromjpeg($image_path);
    } else if (
    $ext == 'png') {
        
    $img imagecreatefrompng($image_path);
    // Alcune versioni delle librerie GD 2.x e 1.x
    // non posseggono il supporto per la creazione delle immagini
    // .GIF in tal caso si può utilizzare il codice precedentemente
    //visto per vilualizzare un immagine di errore predefinita
    } else if ($ext == 'gif') {
        
    $img imagecreatefromgif($image_path);
        
    //header("Content-type: image/gif");
        //fpassthru(fopen(GIF_ICON, 'rb'));
        //exit;
    }

    //Se l'immagine è stata correttamente caricata continuo
    if ($img) {

        
    //la funzione getimagesize ritorna un array da 0 a 3
        //con rispettivamente larghezza, altezza e tipo immagine.
        
    $imginfo getimagesize($image_path);
        
    $width $imginfo[0];
        
    $height =  $imginfo[1];
        
    //Definisco la percentuale di ridimento
        
    $scale max($width$height) / $new_size;
        
    $scale max($scale1.0);
        
    //Calcolo le nuove dimensioni dell'immagine in maniera proporzionale
        
    $new_width 150;
        
    $new_height 100;
        
    //Creo una nuova immagine temporanea usando la funzione imagecreatetruecolor
        //che è disponibile solo nelle librerie GD 2.x e che da
        //rispetto alla vecchia imagecreate(da usare per chi ha le GD 1.x)
        //risultati ottimi in fatto di qualità dell'immagine
        
    $tmp_img imagecreatetruecolor($new_width$new_height);
        
    //$tmp_img = imagecreate($new_width, $new_height);
        //A questo punto dall'immagine di origine $img creo nel contenitore
        //$tmp_img l'immagine ridimensionata. Attenzione ai parametri della funzione
        //imagecopyresampled, non li spiegherò, sono facilmente intuibili.
        //Tale funzione è disponibile per chi ha installato sul prorio server il modulo
        //delle GD 2.x, nel caso abbia le GD 1.x deve usare la funzione imagecopyresized
        
    imagecopyresampled($tmp_img$img0000
                             
    $new_width, (int)$new_height$width$height);
        
    //imagecopyresised($tmp_img, $img, 0, 0, 0, 0, 
        //                 $new_width, (int)$new_height, $width, $height);
        //Quindi distruggo (tolgo dalla memoria) la variabile $img (immagine originale)
        //e le assegno il valore nuovo (immagine ridimensionata) contenuto in $tmp_img
        
    imagedestroy($img);
        
    $img $tmp_img;
    }

    //Se qualcosa va storto e la variabile $img è vuota
    //allora provvedo alla creazione attraverso i comandi
    //di grafica delle GD di un immagine a cui assegno
    //le dimenzioni predefinte con define, uno sfondo giallo
    //(rgb: 255,255,204) e disegno con le funzioni imageline
    //due linee blu (rgb: 70,70,70) trasversali all'interno della mia
    //immagine quadrata
    //
    if ($img == null) {
        
    $img imagecreate(MAX_WIDTHMAX_HEIGHT);
        
    imagecolorallocate($img,255,255,204);
        
    $c2 imagecolorallocate($img,70,70,70);
        
    imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c2);
        
    imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c2);
        
    //$text_color = ImageColorAllocate($img, 102 ,153, 204
        
    }

    //A questo punto alla pagina di chiamata
    //faccio ritornare l'header che le fa capire che trattasi
    //di immagine (di JPEG)
    header("Content-type: image/jpeg");
    //La funzione qui sotto serve proprio a questo
    //E' possibile specificare nei parametri, opzionali
    //un nome e la percentuale di compressione
    imagejpeg($img,'',100); //imagedestroy($tmp_img);
    //infine libero la memoria con la funzione imagedestroy
    imagedestroy($img);

    $image $_GET['image'];

    Thumbnalizer ($image);
    ?>
    Fa il suo lavoro senza problemi... l'unica cosa è che non riesco a salvare l'immagine creata in una data cartella...

    come posso fare GRAZIE
    Wami agency
    Io odio tutti gli up-loads!

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    imagejpeg($img, $nome_file_da_salvare, 100);
    http://www.php.net/imagejpeg


    think simple think ringo

  3. #3
    che idiota l'avevo provato ma senza toglieri gli apici''....


    GRAZIE....
    Wami agency
    Io odio tutti gli up-loads!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.