Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33

Discussione: Leggere più formati

  1. #1

    Leggere più formati

    Ho un problema:
    nella cartella "miniature", cioè dove vanno caricate le miniature delle immagini, mi vengono caricate solo file con formato .jpeg/.jpg, tutti gli altri formati mi da: Impossibile aprire questo file.

    Codice PHP:
    <?php
    function filtranome($nomefile)  
    {
      
    // qui filtri con varie funzioni 
      
    $nuovonome $nomefile;  
      
    $nuovonome str_replace(array(" "".",","), $nuovonome); // elimino alcuni caratteri 
      
    $nuovonome strtolower($nuovonome); // tutto in minuscolo 
      
    $nuovonome .= '_'.time().'.jpg';
      return (
    $nuovonome); 
    };
    // controllo che non ci siano stati errori nell'upload (codice = 0) 
    if ($_FILES['uploadfile']['error'] == 0)
    {
        
    // upload ok
        // controllo che il file sia in formato gif
        
    if (!(in_array($_FILES['uploadfile']['type'], array('image/jpeg','image/png','image/gif','image/jpg','image/bmp','image/PNG')))) 
        die(
    "Formato file non valido"); 
        
    // copio il file dalla cartella temporanea a quella di destinazione mantenendo il nome originale 
        
    copy($_FILES['uploadfile']['tmp_name'], "file_caricati/".filtranome($_FILES['uploadfile']['name'])) or die("Impossibile caricare il file");
        
    // upload terminato, stampo alcune info sul file
        
    echo "[b]Upload terminato con successo[/b]
    Le Informazioni riguardanti il File che hai appena caricato sono:

    "
    ;
        echo 
    "Nome file: ".$_FILES['uploadfile']['name']."
    "
    ;
        echo 
    "Dimensione file: ".$_FILES['uploadfile']['size']."
    "
    ;
        echo 
    "Tipo MIME file: ".$_FILES['uploadfile']['type'];
    }
    else
        {
        
    // controllo il tipo di errore
            
    if ($_FILES['uploadfile']['error'] == 2)
                {
                    
    // errore, file troppo grande (> 1MB)
                    
    die("Errore, file troppo grande: il massimo consentito è 1MB");
                }
            else
                {
                    
    // errore generico
                    
    die("Errore, impossibile caricare il file");
                }
        }
    ?>


    <?php
    $img 
    "file_caricati/".filtranome($_FILES['uploadfile']['name']); // percorso al file dell'immagine
    $dest "miniature/".filtranome($_FILES['uploadfile']['name']); // directory di salvataggio delle miniature create

    // dimensioni della miniatura da creare
    $thumbWidth 60// larghezza 
    $thumbHeight 60// altezza 
    // livello di compressione della miniatura
    $thumbComp 90;

    // creazione dell'immagine della miniatura
    $thumb imagecreate($thumbWidth$thumbHeight) or die("Impossibile creare la miniatura");
    // apertura dell'immagine originale 
    $src imagecreatefromjpeg($img) or die ("Impossibile aprire l'immagine originale");

    // copio l'immagine originale in quella della miniatura ridimensionandola
    imagecopyresized($thumb$src0000$thumbWidth$thumbHeightimageSx($src), imageSy($src)) or die("Impossibile ridimensionare l'immagine");

    // salvataggio miniatura
    imagejpeg($thumb$dest$thumbComp) or die("Impossibile salvare la miniatura");
    ?>
    Consigli su come risolvere il problema?

    Se puo essere utile ho trovato in un sito questo pezzo di codice:


    Codice PHP:
    if ($filetype == 'jpg') {
        
    $srcImg imagecreatefromjpeg("$imageDirectory/$imageName");
    } else
    if (
    $filetype == 'jpeg') {
        
    $srcImg imagecreatefromjpeg("$imageDirectory/$imageName");
    } else
    if (
    $filetype == 'png') {
        
    $srcImg imagecreatefrompng("$imageDirectory/$imageName");
    } else
    if (
    $filetype == 'gif') {
        
    $srcImg imagecreatefromgif("$imageDirectory/$imageName");
    }

    $origWidth imagesx($srcImg);
    $origHeight imagesy($srcImg);

    $ratio $origWidth $thumbWidth;
    $thumbHeight $origHeight $ratio;

    $thumbImg imagecreatetruecolor($thumbWidth$thumbHeight);
    imagecopyresized($thumbImg$srcImg0000$thumbWidth$thumbHeight$origWidth$origHeight);

    if (
    $filetype == 'jpg') {
        
    imagejpeg($thumbImg"$thumbDirectory/$imageName");
    } else
    if (
    $filetype == 'jpeg') {
        
    imagejpeg($thumbImg"$thumbDirectory/$imageName");
    } else
    if (
    $filetype == 'png') {
        
    imagepng($thumbImg"$thumbDirectory/$imageName");
    } else
    if (
    $filetype == 'gif') {
        
    imagegif($thumbImg"$thumbDirectory/$imageName");


  2. #2
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Il secondo script che hai trovato può tranquillamente fare al caso tuo e tendenzialmente risolvere il problema di visualizzazione ammesso che il problema si localizzato solo in quel punto. Quello che devi fare è buttare via la porzione di codice a partire da

    // creazione dell'immagine della miniatura

    e sostituirla con lo script che hai trovato. Fai attenzione che dovrai cambiare il nome delle variabili che definiscono le dimensioni delle thumb in modo opportuno.

  3. #3
    Originariamente inviato da _debo
    Il secondo script che hai trovato può tranquillamente fare al caso tuo e tendenzialmente risolvere il problema di visualizzazione ammesso che il problema si localizzato solo in quel punto. Quello che devi fare è buttare via la porzione di codice a partire da

    // creazione dell'immagine della miniatura

    e sostituirla con lo script che hai trovato. Fai attenzione che dovrai cambiare il nome delle variabili che definiscono le dimensioni delle thumb in modo opportuno.
    Cosi dici?

    Codice PHP:
    <?php
    function filtranome($nomefile)  
    {
      
    // qui filtri con varie funzioni 
      
    $nuovonome $nomefile;  
      
    $nuovonome str_replace(array(" "".",","), $nuovonome); // elimino alcuni caratteri 
      
    $nuovonome strtolower($nuovonome); // tutto in minuscolo 
      
    $nuovonome .= '_'.time().'.jpg';
      return (
    $nuovonome); 
    };
    // controllo che non ci siano stati errori nell'upload (codice = 0) 
    if ($_FILES['uploadfile']['error'] == 0)
    {
        
    // upload ok
        // controllo che il file sia in formato gif
        
    if (!(in_array($_FILES['uploadfile']['type'], array('image/jpeg','image/png','image/gif','image/jpg','image/bmp','image/PNG')))) 
        die(
    "Formato file non valido"); 
        
    // copio il file dalla cartella temporanea a quella di destinazione mantenendo il nome originale 
        
    copy($_FILES['uploadfile']['tmp_name'], "file_caricati/".filtranome($_FILES['uploadfile']['name'])) or die("Impossibile caricare il file");
        
    // upload terminato, stampo alcune info sul file
        
    echo "[b]Upload terminato con successo[/b]
    Le Informazioni riguardanti il File che hai appena caricato sono:

    "
    ;
        echo 
    "Nome file: ".$_FILES['uploadfile']['name']."
    "
    ;
        echo 
    "Dimensione file: ".$_FILES['uploadfile']['size']."
    "
    ;
        echo 
    "Tipo MIME file: ".$_FILES['uploadfile']['type'];
    }
    else
        {
        
    // controllo il tipo di errore
            
    if ($_FILES['uploadfile']['error'] == 2)
                {
                    
    // errore, file troppo grande (> 1MB)
                    
    die("Errore, file troppo grande: il massimo consentito è 1MB");
                }
            else
                {
                    
    // errore generico
                    
    die("Errore, impossibile caricare il file");
                }
        }
    ?>


    <?php
    $img 
    "file_caricati/".filtranome($_FILES['uploadfile']['name']); // percorso al file dell'immagine
    $dest "miniature/".filtranome($_FILES['uploadfile']['name']); // directory di salvataggio delle miniature create

    // dimensioni della miniatura da creare
    $thumbWidth 60// larghezza 
    $thumbHeight 60// altezza 
    // livello di compressione della miniatura
    $thumbComp 90;

    if (
    $filetype == 'jpg') { 
            
    $srcImg imagecreatefromjpeg("$src"); 
        } else 
        if (
    $filetype == 'jpeg') { 
            
    $srcImg imagecreatefromjpeg("$src"); 
        } else 
        if (
    $filetype == 'png') { 
            
    $srcImg imagecreatefrompng("$src"); 
        } else 
        if (
    $filetype == 'gif') { 
            
    $srcImg imagecreatefromgif("$src"); 
        }
        
        
    $origWidth imagesx($srcImg); 
        
    $origHeight imagesy($srcImg); 

        
    $thumbWidth $tw;
        
        
    $ratio $origWidth $thumbWidth
        
    $thumbHeight $origHeight $ratio

        
    $thumbImg imagecreatetruecolor($thumbWidth$thumbHeight); 
        
    imagecopyresized($thumbImg$srcImg0000$thumbWidth$thumbHeight$origWidth$origHeight); 

        if (
    $filetype == 'jpg') { 
            
    $res imagejpeg($thumbImg"$dst"$tc); 
        } else 
        if (
    $filetype == 'jpeg') { 
            
    $res imagejpeg($thumbImg"$dst"$tc); 
        } else 
        if (
    $filetype == 'png') { 
            
    $res imagepng($thumbImg"$dst");
        } else 
        if (
    $filetype == 'gif') { 
            
    $res imagegif($thumbImg"$dst"); 
        } 
    ?>

  4. #4
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    A prima vista sembra ok se non per il fatto che non hai rinominato il parametro di compressione durante la creazione delle immagini.

  5. #5
    Infatti, ho provato e l'upload avviene correttamente. Soltanto che non crea la miniatura dell'immagine. Come faccio?

  6. #6
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Dipende da cosa sta generando il problema. L'esecuzione del codice da errori di qualche sorta?

  7. #7
    Nessun errore.
    La prima parte la legge e la applica correttamente, ma poi da "
    " sembra ce non viene letta, dato che non crea la miniatura della foto/immagine che è stata caricata.

  8. #8
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Ok ho capito dove si trova il problema.
    Codice PHP:
        // livello di compressione della miniatura 
        
    $thumbComp 90

        if (
    $filetype == 'jpg') {  
            
    $srcImg imagecreatefromjpeg("$src");  
        } else  
        if (
    $filetype == 'jpeg') {  
            
    $srcImg imagecreatefromjpeg("$src");  
        } else  
        if (
    $filetype == 'png') {  
            
    $srcImg imagecreatefrompng("$src");  
        } else  
        if (
    $filetype == 'gif') {  
            
    $srcImg imagecreatefromgif("$src");  
        } 
    "$filetype" non viene definito da nessuna parte e di conseguenza il tutto fallisce. C'è da dire che è molto strano che non appaia nessun errore. Nemmeno nei log? Sei sicuro che l'error reporting sia abilitato?

  9. #9
    Controllato, tutto ativato. Il fatto, come dici anche te, che è strano è che non viene dato nessun errore. Se a schermo non compare l'errore è forse perche nella seconda parte non è presente nessun "die".
    Comunque hai ragione, la variabile "$filetype" non viene dichiarata.
    Come facciamo?

  10. #10
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Beh no, l'assenza del die non c'entra nulla in questo caso. Ok dedichiamoci ad un po' di sano e divertente VDD
    Modifica il tuo codice come segue
    Codice PHP:
        if ($filetype == 'jpg') {  
            
    $srcImg imagecreatefromjpeg("$src");  
        } else  
        if (
    $filetype == 'jpeg') {  
            
    $srcImg imagecreatefromjpeg("$src");  
        } else  
        if (
    $filetype == 'png') {  
            
    $srcImg imagecreatefrompng("$src");  
        } else  
        if (
    $filetype == 'gif') {  
            
    $srcImg imagecreatefromgif("$src");  
        } 
        
        
    var_dump($srcImg);

        
    $origWidth imagesx($srcImg);  
        
    $origHeight imagesy($srcImg);  

        
    var_dump($origWidth);
        
    var_dump($origHeight);
        
    var_dump($tw);

        
    $thumbWidth $tw

        
    var_dump($thumbWidth);
         
        
    $ratio $origWidth $thumbWidth;  
        
    $thumbHeight $origHeight $ratio;  

        
    var_dump($ratio);
        
    var_dump($thumbHeight); 
    E dimmi cortesemente che cosa salta fuori.

    Per quanto riguarda il $filetype quello lo puoi recuperare e definire in fase di upload utilizzando $_FILES['uploadfile']['type']

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.