Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Generare thumbanil

  1. #1

    Generare thumbanil

    Salve a tutti. Ho un piccolo problema con lo script di upload immagini. Vorrei infatti fare in modo che se i controlli sono passati e non ci sono errori, oltre che all'upload standard dell'immagine si proceda anche con una creazione della thumbnail. Quindi, se ci sono errori, li stampo ed interrompo l'upload, altrimenti (else) procedo con l'upoload. Nel sito ho trovato questa funzione che fa al caso mio. Quindi la includo in upload.php e la richiamo se appunto non ci sono errori:
    Codice PHP:
    function OutThumb($src$w$h){
      
    $size getimagesize($src);
      if( 
    $size[2] == ){$im = @imagecreatefromjpeg($src);}
      elseif( 
    $size[2] == ){$im = @imagecreatefromgif($src);}
      elseif( 
    $size[2] == ){$im = @imagecreatefrompng($src);}

      
    $newwidth $size[0];
      
    $newheight $size[1];

      if( 
    $newwidth $w ){
        
    $newheight = ($w $newwidth) * $newheight;
        
    $newwidth $w;
      }
      if( 
    $newheight $h ){
        
    $newwidth = ($h $newheight) * $newwidth;
        
    $newheight $h;
      }

      if( (
    GDVersion() == 2) AND ($size[2] != 1) ){
        
    $new imagecreatetruecolor($newwidth$newheight);
        
    imagecopyresampled($new$im0000$newwidth$newheight$size[0], $size[1]);
      }
      else{
        
    $new imagecreate($newwidth$newheight);
        
    imagecopyresized($new$im0000$newwidth$newheight$size[0], $size[1]);
      }
      
    header('Content-Type: ' $size['mime']);
      if( 
    $size[2] == ){@imagejpeg($new''100);}
      elseif( 
    $size[2] == ){@imagegif($new);}
      elseif( 
    $size[2] == ){@imagepng($new);}
      @
    imagedestroy($im);
      @
    imagedestroy($new); 
    La domanda è: come faccio a stabilire il percorso dove la thumb verrà salvata e la sua URL?

  2. #2
    Nessuno?
    Sia chiaro che sono gradite anche altre soluzioni, la funzione non deve essere necessariamente quella.

  3. #3
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Ciao, io in passato ho creato ed usato questa funzione; è diversa come impostazione dalla tua; te la mostro e poi ti spiego:

    Codice PHP:
    function pvt_create_thumbnail($album_path$img) {
        
    // Original image information
        
    list($width$height$type$attr) = 
            
    getimagesize($album_path.'/images/'.$img);
        
    // Creo la versione 87*65 dell'immagine
        
    $thumb imagecreatetruecolor(8765);
        
    $source imagecreatefromjpeg($album_path.'/images/'.$img);
        
    imagecopyresized($thumb$source00008765$width$height);
        
    // Salvo l'immagine ridimensionata
        
    imagejpeg($thumb$album_path.'/thumbs/'.$img75);
        
    chmod($album_path.'/thumbs/'.$img0766);

    Premessa: l'ho usata per la creazione di una galleria fotografica, quindi forse dovrai riaddattarla: cmq passo a spiegarti cosa fa. Allora: alla funzione passo il path dell'album (nel mio caso /gallery/album_di_prova/) ed il nome dell'immagine (img.jpg). Ora io mi sono organizzato in questo modo nella gerarchia delle cartelle: /gallery/album_di_prova/ aveva 2 sottocartelle, images/ (che contiene le immagini in dimensioni normali - che per come ho implementato la mia galleria erano tutte 640x480 se non ricordo male -) e thumbs/ (che contiene tutte le thumb); suppongo di avere img.jpg disponibile nella sottocartella images/. Quindi prendo l'immagine con list(...), ne creo la versione piccola con $thumbs = imagecreatetruecolor(...) e la ridimensiono con imagecopyresized(...). Infine la salvo nella sottocartella thumbs/ con imagejpeg(...) e ne cambio i permessi per la lettura con chmod(...). Tutto qua spero di essere stato chiaro e soprattutto utile


    Gab

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    257
    questo scritto necessita di libreria gd?

  5. #5
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Ovviamente, altrimenti è impossibile manipolare immagini con php

  6. #6
    Originariamente inviato da Gab-81

    Codice PHP:
    function pvt_create_thumbnail($album_path$img) {
        
    // Original image information
        
    list($width$height$type$attr) = 
            
    getimagesize($album_path.'/images/'.$img);
        
    // Creo la versione 87*65 dell'immagine
        
    $thumb imagecreatetruecolor(8765);
        
    $source imagecreatefromjpeg($album_path.'/images/'.$img);
        
    imagecopyresized($thumb$source00008765$width$height);
        
    // Salvo l'immagine ridimensionata
        
    imagejpeg($thumb$album_path.'/thumbs/'.$img75);
        
    chmod($album_path.'/thumbs/'.$img0766);

    Grazie mille per la risposta, ma ti espongo il problema che ancora mi si pone. Dunque il mio script è fatto così: il form invia il file ad upload.php che si cura di verificare l'autenticità dell'immagine e, se ci sono errori, ferma l'upload e li stampa; se non ci sono procede a salvare il file prima nella variabile $url, poi nel db, nello specifico nei campi ID, URL e NOME. Il problema che mi si pone é: dove devo fare entrare in gioco la funzione?
    Ho provato ad adattare la tua funzione alle mie esigenze:
    Codice PHP:
    function pvt_create_thumbnail($immagini$url) {
        
    // Original image information
        
    list($width$height$type$attr) =
            
    getimagesize($urlimmagine);
        
    // Creo la versione 87*65 dell'immagine
        
    $thumb imagecreatetruecolor(8765);
        
    $source imagecreatefromjpeg($urlimmagine);
        
    imagecopyresized($thumb$source00008765$width$height);
        
    // Salvo l'immagine ridimensionata
        
    imagejpeg($thumb$directory.'/thumbs/'.$urlimmagine75);
        
    chmod($immagini.'/thumbs/'.$img0766);

    Preciso che $url nasce da:
    Codice PHP:
    $url $directorytime() . '-' strtolower($_FILES['immagine']['name']); 
    e che in upload.php utilizzo già all'inizio getimagesize:
    Codice PHP:
    $dimensioni getimagesize($_FILES['immagine']['tmp_name']); 
    per specificare che forse non è il caso di richiamarla, visto che è comunque pesante.
    Infine, dopo i controlli:
    Codice PHP:
    if(count($errori) > 0)    {       
     echo 
    '[...]';         
    }  
    //upload
    else    { salvo in $url e nel db 
    Dove deve entrare la funzione?

  7. #7
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Come ti dicevo, questa funzione "presuppone" che ci sia già l'immagine nelle sue dimensioni originali salvata in una cartella del server. Quindi, quando tu esegui l'upload, dopo i controlli spedisci l'immagine in una cartella del server, dopo invochi la funzione. Io ho fatto la scelta di raggruppare le immagini in una stessa cartella ($album_path) che ha due sottocartelle, images/ (per le immagini in dimensioni normali) e thumbs/ (per le immagini ridotte). Se fai una scelta diversa devi modificare la funzione, magari passando 3 parametri alla funzione, del tipo

    pvt_create_thumbnail($images_path, $thumbs_path, $img) {...}

    Spero di essere stato d'aiuto

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 © 2025 vBulletin Solutions, Inc. All rights reserved.