Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    154

    upload immagini gif = NERE

    Ciao a tutti, ho un problema con l'upload e ridimensionamento delle immagini.
    Con le JPG tutto procede correttamente, ma se carica una GIF o una PNG, le immagini che escono sono interamente nere.
    Dove sbaglio? Posto il codice.
    codice:
      if (is_uploaded_file($_FILES['image']['tmp_name'])) {
        // Controllo che il file non superi 1 Mb
        if ($_FILES['image']['size'] > 5000000) {
         echo("
    
    Il file non deve superare 5 Mb!! Torna <a href=\"javascript: history.go(-1)\">indietro</a>.</p>");
    
    }
    else{
    list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
    if (($type==1) || ($type==2) || ($type==3)) {
    
    if($width > 726){
    $newwidth = 726;
    }
    else{
    $newwidth = $width;
    }
    $newheight = $newwidth * $height / $width;
    $descr = mysql_real_escape_string($_POST[descrizione]);
    $ora = time();
    $sql = "insert into foto(id, utente, descrizione, ora) values(NULL, \"$_SESSION[utenteconnesso]\", \"$descr\", \"$ora\");";
    $query = mysql_query($sql) or die (mysql_error());
    $sql = "select max(id) as id from foto where utente = \"$_SESSION[utenteconnesso]\"";
    $query = mysql_query($sql) or die(mysql_error());
    $dati = mysql_fetch_assoc($query);
    $ultimo_id = $dati[id];
    $thumb = imagecreatetruecolor($newwidth, $newheight);
    
     switch( $type )
        {
            case '1':
                $img = imagecreatefromgif($_FILES['image']['tmp_name']);
    		break;
            case '2':
                $img = imagecreatefromjpeg($_FILES['image']['tmp_name']);
    		break;
            case '3':
                $img = imagecreatefrompng($_FILES['image']['tmp_name']);
       		break;
        }
    
    
    imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    switch($type) {
    		case '1':
    		$simg = imagegif($thumb, $_SERVER['DOCUMENT_ROOT']."/foto/".$ultimo_id.".gif", 80);
    		break;
    		case '2':
    		$simg = imagejpeg($thumb, $_SERVER['DOCUMENT_ROOT']."/foto/".$ultimo_id.".jpg", 80);
    		break;
    		case '3':
    		$simg = imagepng($thumb, $_SERVER['DOCUMENT_ROOT']."/foto/".$ultimo_id.".png", 80);
    		break;
    	}
    
    
    header("Location: http://www.miosito.com/photo_profile.php?id=$_SESSION[utenteconnesso]");
    
    if($width > 130){
    $newwidth = 130;
    }
    else{
    $newwidth = $width;
    }
    $newheight = $newwidth * $height / $width;
    $thumb = imagecreatetruecolor($newwidth, $newheight);
    $source = imagecreatefromjpeg($_FILES['image']['tmp_name']);
    imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    
    switch($type) {
    		case '1':
    		$simg = imagegif($thumb, $_SERVER['DOCUMENT_ROOT']."/p_foto/".$ultimo_id.".gif", 100);
    		break;
    		case '2':
    		$simg = imagejpeg($thumb, $_SERVER['DOCUMENT_ROOT']."/p_foto/".$ultimo_id.".jpg", 100);
    		break;
    		case '3':
    		$simg = imagepng($thumb, $_SERVER['DOCUMENT_ROOT']."/p_foto/".$ultimo_id.".png", 100);
    		break;
    	}
    
    }
    else{
    echo("Formato non valido!!");
    }
    }
    }
    else{
    echo("
    
    Non hai caricato nessuna foto! Torna <a href=\"javascript: history.go(-1)\">indietro</a>!</p>");
    }

  2. #2
    non mi sono messo a leggere tutto il codice ma penso che tu abbia un problema con il canale alpha, per caso sai dirci se le immagini GIF e PNG con cui hai provato hanno trasparenze?
    Ubuntu rulez!! :P

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    154
    no ho preso delle immagini a caso, ma senza trasparenze probabilmente sbaglio qualcosa nel ridimensionamento della gif...

  4. #4
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    così a primo colpo d'occhio dovresti verificare $thumb e $source, da quanto vedo non contiene il path assoluto, prova a dargli il path assoluto.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    154
    Originariamente inviato da jeppox
    così a primo colpo d'occhio dovresti verificare $thumb e $source, da quanto vedo non contiene il path assoluto, prova a dargli il path assoluto.
    In che senso il path assoluto? scusa ma non sono molto pratico

  6. #6
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    intendo il percorso assoluto dell'immagine che vuoi ridimensionare e della sua destinazione. Naturalmente non il suo URL ma il path riferito alla root del tuo webserver tipo una cosa del genere se su server linux:

    /var/www/htdocs/project/images/test.jpg


    Codice PHP:
    <?php
    $script_dir 
    dirname($_SERVER["SCRIPT_FILENAME"])."/";
    echo 
    "Path assoluto: ".$script_dir."
    "
    ;
    ?>

  7. #7
    Ho notato che inizialmente fai uno switch in base al tipo di immagine, mentre in seguito non lo fai
    ed utilizzi solamente:

    Codice PHP:
    $source imagecreatefromjpeg($_FILES['image']['tmp_name']); 
    Siccome tu dici:

    Con le JPG tutto procede correttamente, ma se carica una GIF o una PNG, le immagini che escono sono interamente nere.
    Credo che il problema sia quello.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    154
    sì grazie! era proprio questo il problema

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.