• User

    imagepng taglia la trasparenza

    Ciao a tutti vi chiedo un aiuto; ho creato una funzione di inserimento foto (jpg) predefinita in automatico "se il campo immagine passato dal form e vuoto", e fin qui tutto bene; il problema nasce se uso una foto png come predefinita. In pratica la trasparenza la vedo grigia o bianca, ho provato con tutta la famiglia di internet explorer , opera, safari, firefox, ho controllato la foto salvata in cartella dalla funziona e la vedo senza trasparenza; vi copio il codice inserimento foto automatico.
    Grazie a tutti.
    PS la salvo 2 volte in 2 cartelle
    [php]

    elseif (empty ($immagine))
    {
    $timestamp = time();
    $files = '../../images/persona_staff.png';
    $thumb = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
    $thumbs = '../../images/staff/thumb/'.time().'-'.'persona_staff.png';
    imagepng ($thumb, $thumbs, 9);
    $file = time().'-'.'persona_staff.png';

    $img = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
    $imgs = '../../images/staff/foto/'.time().'-'.'persona_staff.png';
    imagepng ($img, $imgs, 9);
    $photo = time().'-'.'persona_staff.png';
    }
    //con le 2 variabile $file e $photo salvo il nome della foto nel database
    [/php]


  • User Attivo

    Prova così :
    [PHP]
    elseif (empty ($immagine))
    {

    $timestamp = time();
    $files = '../../images/persona_staff.png';

    $thumb = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
    imageAlphaBlending($files, true);
    imageSaveAlpha($files, true);
    $thumbs = '../../images/staff/thumb/'.time().'-'.'persona_staff.png';
    imagepng ($thumb, $thumbs, 9);
    $file = time().'-'.'persona_staff.png';

    $img = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");

    $imgs = '../../images/staff/foto/'.time().'-'.'persona_staff.png';
    imagepng ($img, $imgs, 9);
    $photo = time().'-'.'persona_staff.png';
    }

    [/PHP]


  • User

    ciao grazie dell aiuto, ma non funziona, ho visto che anche se inserisco una png a 8 o 24 bit dal form, l immagine ridimensionata cambia colore, uso come server easyphp2 su win xp sp3, le GD2 sono attive, copio tutto il codice di inserimento/ridimensionamento foto. grazie a tutti

    [php]
    $immagine = $_FILES['immagine']['type'];
    if (empty ($immagine))
    {
    $timestamp = time();
    $files = '../../images/persona_staff.png';
    $thumb = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
    imagealphablending($files, false);
    imagesavealpha ($files, true);
    $thumbs = '../../images/staff/thumb/'.time().'-'.'persona_staff.png';
    imagepng ($thumb, $thumbs, 9);
    $file = time().'-'.'persona_staff.png';

    $img = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
    imagealphablending($files, false);
    imagesavealpha ($files, true);
    $imgs = '../../images/staff/foto/'.time().'-'.'persona_staff.png';
    imagepng ($img, $imgs, 9);
    $photo = time().'-'.'persona_staff.png';
    }
    elseif (!empty ($immagine))
    {
    $timestamp = time();
    $type = $immagine;
    $file = time() .'-'.$_FILES['immagine']['name'];
    $type = array("image/gif","image/x-png", "image/png","image/pjpeg","image/jpeg", "image/jpg");
    if(!in_array($_FILES['immagine']['type'],$type))
    {
    die("Il file non è di un tipo consentito, sono ammessi solo i seguenti: " . implode("," , $type) . ".");
    }
    $sImgInfo = getimagesize($_FILES['immagine']['tmp_name']);
    $max_width = "1024";
    $max_height = "1024";
    $sMaxWidth = $sImgInfo[0];
    $sMaxHeight = $sImgInfo[1];
    if ($sMaxWidth > $max_width || $sMaxHeight > $max_height)
    {
    die ("Errore: La Foto ha Dimisioni Maggiori di 1024x1024 " .mysql_error());
    exit;
    }

    $dir ="../../images/staff/foto/";
    $urlimmagine = $dir.$file;
    copy($_FILES['immagine']['tmp_name'], $urlimmagine);
    $destination_path = '../../images/staff/thumb/'.$file;
    $photo = $file;
    }
    list () = thummain ($type, $file, $destination_path, $sMaxWidth, $sMaxHeight, $sImgInfo, $urlimmagine);
    function thummain( $type, $file, $destination_path, $sMaxWidth, $sMaxHeight, $sImgInfo, $urlimmagine)
    {
    switch($sImgInfo[2])
    {
    case 1: $sType = IMG_GIF; break;
    case 2: $sType = IMG_JPG; break;
    case 3: $sType = IMG_PNG; break;
    case 4: $sType = IMG_WBMP; break;
    default: return $urlimmagine; break;
    }
    switch($sType)
    {
    case IMG_GIF:
    if (!function_exists('imagecreatefromgif')) return $urlimmagine;
    $srcImage = imagecreatefromgif($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    case IMG_JPG:
    if (!function_exists('imagecreatefromjpeg')) return $urlimmagine;
    $srcImage = imagecreatefromjpeg($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    case IMG_PNG:
    if (!function_exists('imagecreatefrompng')) return $urlimmagine;
    $srcImage = imagecreatefrompng($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    case IMG_WBMP:
    if (!function_exists('imagecreatefromwbmp')) return $urlimmagine;
    $srcImage = imagecreatefromwbmp($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    default: return $urlimmagine;
    }
    if($srcImage)
    {
    $srcWidth = $sImgInfo[0];
    $srcHeight = $sImgInfo[1];

        $sNewWidth = 200; 
        $sNewHeight =  ($sNewWidth * $srcHeight) / $srcWidth;
        if (!function_exists("imagecreatetruecolor")) 
            $sDestImage = imagecreate($sNewWidth, $sNewHeight) or die("Impossibile creare la miniatura"); 
        else 
            $sDestImage = imagecreatetruecolor($sNewWidth, $sNewHeight); 
          
        imagecopyresized($sDestImage, $srcImage, 0, 0, 0, 0, $sNewWidth, $sNewHeight, $srcWidth, $srcHeight); 
        switch($sType) 
        { 
            case IMG_GIF: imagegif($sDestImage, $destination_path); break; 
            case IMG_JPG: imagejpeg($sDestImage, $destination_path); break; 
            case IMG_PNG: imagepng($sDestImage, $destination_path); break; 
            case IMG_WBMP: imagewbmp($sDestImage, $destination_path); break; 
        } 
        imagedestroy($srcImage); 
        imagedestroy($sDestImage); 
        return $destination_path; 
    } 
    
    else 
    { 
        return $urlimmagine; 
    } 
    

    }

    [/php]


  • User Attivo

    Prova così :
    [php]
    $immagine = $_FILES['immagine']['type'];
    if (empty ($immagine))
    {
    $timestamp = time();
    $files = '../../images/persona_staff.png';
    $thumb = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
    imagealphablending($thumb, false);
    imagesavealpha ($thumb, true);
    $thumbs = '../../images/staff/thumb/'.time().'-'.'persona_staff.png';
    imagepng ($thumb, $thumbs, 9);
    $file = time().'-'.'persona_staff.png';

    $img = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
    imagealphablending($img, false);
    imagesavealpha ($img, true);
    $imgs = '../../images/staff/foto/'.time().'-'.'persona_staff.png';
    imagepng ($img, $imgs, 9);
    $photo = time().'-'.'persona_staff.png';
    }
    elseif (!empty ($immagine))
    {
    $timestamp = time();
    $type = $immagine;
    $file = time() .'-'.$_FILES['immagine']['name'];
    $type = array("image/gif","image/x-png", "image/png","image/pjpeg","image/jpeg", "image/jpg");
    if(!in_array($_FILES['immagine']['type'],$type))
    {
    die("Il file non è di un tipo consentito, sono ammessi solo i seguenti: " . implode("," , $type) . ".");
    }
    $sImgInfo = getimagesize($_FILES['immagine']['tmp_name']);
    $max_width = "1024";
    $max_height = "1024";
    $sMaxWidth = $sImgInfo[0];
    $sMaxHeight = $sImgInfo[1];
    if ($sMaxWidth > $max_width || $sMaxHeight > $max_height)
    {
    die ("Errore: La Foto ha Dimisioni Maggiori di 1024x1024 " .mysql_error());
    exit;
    }

    $dir ="../../images/staff/foto/";
    $urlimmagine = $dir.$file;
    copy($_FILES['immagine']['tmp_name'], $urlimmagine);
    $destination_path = '../../images/staff/thumb/'.$file;
    $photo = $file;
    }
    list () = thummain ($type, $file, $destination_path, $sMaxWidth, $sMaxHeight, $sImgInfo, $urlimmagine);
    function thummain( $type, $file, $destination_path, $sMaxWidth, $sMaxHeight, $sImgInfo, $urlimmagine)
    {
    switch($sImgInfo[2])
    {
    case 1: $sType = IMG_GIF; break;
    case 2: $sType = IMG_JPG; break;
    case 3: $sType = IMG_PNG; break;
    case 4: $sType = IMG_WBMP; break;
    default: return $urlimmagine; break;
    }
    switch($sType)
    {
    case IMG_GIF:
    if (!function_exists('imagecreatefromgif')) return $urlimmagine;
    $srcImage = imagecreatefromgif($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    case IMG_JPG:
    if (!function_exists('imagecreatefromjpeg')) return $urlimmagine;
    $srcImage = imagecreatefromjpeg($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    case IMG_PNG:
    if (!function_exists('imagecreatefrompng')) return $urlimmagine;
    $srcImage = imagecreatefrompng($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    case IMG_WBMP:
    if (!function_exists('imagecreatefromwbmp')) return $urlimmagine;
    $srcImage = imagecreatefromwbmp($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    default: return $urlimmagine;
    }
    if($srcImage)
    {
    $srcWidth = $sImgInfo[0];
    $srcHeight = $sImgInfo[1];

        $sNewWidth = 200; 
        $sNewHeight =  ($sNewWidth * $srcHeight) / $srcWidth;
        if (!function_exists("imagecreatetruecolor")) 
            $sDestImage = imagecreate($sNewWidth, $sNewHeight) or die("Impossibile creare la miniatura"); 
        else 
            $sDestImage = imagecreatetruecolor($sNewWidth, $sNewHeight); 
          
        imagecopyresized($sDestImage, $srcImage, 0, 0, 0, 0, $sNewWidth, $sNewHeight, $srcWidth, $srcHeight); 
        switch($sType) 
        { 
            case IMG_GIF: imagegif($sDestImage, $destination_path); break; 
            case IMG_JPG: imagejpeg($sDestImage, $destination_path); break; 
            case IMG_PNG: imagepng($sDestImage, $destination_path); break; 
            case IMG_WBMP: imagewbmp($sDestImage, $destination_path); break; 
        } 
        imagedestroy($srcImage); 
        imagedestroy($sDestImage); 
        return $destination_path; 
    } 
    
    else 
    { 
        return $urlimmagine; 
    } 
    

    } [/php]


  • User

    ciao funziona, grazie del aiuto:smile5:
    ho cambiato anche 2 piccole cose nel codice updata_images:smile5:. lo copio per intero con ridimensionamento automatico, se al qualcuno può servire:figo2:.
    ps per un mod ho un altra discussione risolta sempre legata a questo codice, si possono collegare insieme visto che si parla sempre dello stesso codice, ma in punti diversi?

    codice updata_images
    [php]
    <?php //classe update e ridimensionamento automatico
    $immagine = $_FILES['immagine']['type'];
    //inserisce una foto predefinita se $immagine e vuota
    if (empty ($immagine))
    {
    $timestamp = time(); //uso la funzione time per evitare di sovrascrivere le foto con lo stesso nome
    $files = '../../images/noimage.png'; //directory del file da caricare
    $thumb = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
    //usare imagecreatefrompng "per foto png", imagecreatefromjpeg "per foto jpg" e ecc.

    //imagealphablending e imagesavealpha per mantenere la trasparenza delle png
    imagealphablending($thumb, false);
    imagesavealpha ($thumb, true);
    $thumbs = '../../images/dipartimento/thumb/'.time().'-'.'noimage.png'; //directory dove salvare file elaborato
    imagepng ($thumb, $thumbs, 9); //usare imagepng "per foto png", imagejpg "per foto jpg" e ecc.
    $file = time().'-'.'noimage.png'; //con $file salvo solo il nome della foto elaborata senza collegamento nel database

    /salvo la foto di prima in un altra cartella/

    $img = imagecreatefrompng($files) or die ("Impossibile aprire l'immagine originale");
    //usare imagecreatefrompng "per foto png", imagecreatefromjpeg "per foto jpg" e ecc.

    //imagealphablending e imagesavealpha per mantenere la trasparenza delle png
    imagealphablending($img, false);
    imagesavealpha ($img, true);
    $imgs = '../../images/dipartimento/foto/'.time().'-'.'noimage.png';//directory dove salvare file elaborato
    imagepng ($img, $imgs, 9);//usare imagepng "per foto png", imagejpg "per foto jpg" e ecc.
    $photo = time().'-'.'noimage.png'; //con $photo salvo solo il nome della foto elaborata senza collegamento nel database
    }
    //se $immagine e piena
    elseif (!empty ($immagine))
    {
    $timestamp = time(); //uso la funzione time per evitare di sovrascrivere le foto con lo stesso nome
    $type = $immagine; //passo il valore di $immagine a $type
    $file = time() .'-'.$_FILES['immagine']['name']; //salvo la foto arrivata da form con il time per avere sempre foto con nomi diversi
    //controllo il formato della foto
    $type = array("image/gif","image/x-png", "image/png","image/pjpeg","image/jpeg", "image/jpg");
    if(!in_array($_FILES['immagine']['type'],$type))
    {
    die("Il file non è di un tipo consentito, sono ammessi solo i seguenti: " . implode("," , $type) . ".");
    }
    //controllo le dimensioni della foto
    $sImgInfo = getimagesize($_FILES['immagine']['tmp_name']);
    $max_width = "1024";
    $max_height = "1024";
    $sMaxWidth = $sImgInfo[0];
    $sMaxHeight = $sImgInfo[1];
    if ($sMaxWidth > $max_width || $sMaxHeight > $max_height)
    {
    die ("Errore: La Foto ha Dimisioni Maggiori di 1024x1024 " .mysql_error());
    exit;
    }

    $dir ="../../images/dipartimento/foto/";//directory dove salvare la foto originale
    $urlimmagine = $dir.$file; //copio la foto originale della cartella
    copy($_FILES['immagine']['tmp_name'], $urlimmagine);
    $destination_path = '../../images/dipartimento/thumb/'.$file;//directory dove salvare la foto thumb elaborata
    $photo = $file;//salvo questi 2 con lo stesso nome della foto elaborata senza collegamento nel database
    }
    //inizio funzione thummain per cambiare dimensioni alle foto
    list () = thummain ($type, $file, $destination_path, $sMaxWidth, $sMaxHeight, $sImgInfo, $urlimmagine);
    function thummain($type, $file, $destination_path, $sMaxWidth, $sMaxHeight, $sImgInfo, $urlimmagine)
    {
    switch($sImgInfo[2])
    {
    case 1: $sType = IMG_GIF; break;
    case 2: $sType = IMG_JPG; break;
    case 3: $sType = IMG_PNG; break;
    case 4: $sType = IMG_WBMP; break;
    default: return $urlimmagine; break;
    }
    switch($sType)
    {
    case IMG_GIF:
    if (!function_exists('imagecreatefromgif')) return $urlimmagine;
    $srcImage = imagecreatefromgif($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    case IMG_JPG:
    if (!function_exists('imagecreatefromjpeg')) return $urlimmagine;
    $srcImage = imagecreatefromjpeg($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    case IMG_PNG:
    if (!function_exists('imagecreatefrompng')) return $urlimmagine;
    $srcImage = imagecreatefrompng($urlimmagine) or die ("Impossibile aprire l'immagine originale");

    break;
    case IMG_WBMP:
    if (!function_exists('imagecreatefromwbmp')) return $urlimmagine;
    $srcImage = imagecreatefromwbmp($urlimmagine) or die ("Impossibile aprire l'immagine originale");
    break;
    default: return $urlimmagine;
    }
    if($srcImage)
    {
    $srcWidth = $sImgInfo[0];
    $srcHeight = $sImgInfo[1];

        $sNewWidth = 200; 
        $sNewHeight =  ($sNewWidth * $srcHeight) / $srcWidth;
        if (!function_exists("imagecreatetruecolor")) 
            $sDestImage = imagecreate($sNewWidth, $sNewHeight) or die("Impossibile creare la miniatura"); 
    
        else
            $sDestImage = imagecreatetruecolor($sNewWidth, $sNewHeight); 
           imagealphablending($sDestImage, false);
    

    imagesavealpha ($sDestImage, true);

    imagecopyresized($sDestImage, $srcImage, 0, 0, 0, 0, $sNewWidth, $sNewHeight, $srcWidth, $srcHeight);
    switch($sType)
    {
    case IMG_GIF: imagegif($sDestImage, $destination_path); break;
    case IMG_JPG: imagejpeg($sDestImage, $destination_path); break;
    case IMG_PNG: imagepng($sDestImage, $destination_path, 9); break;
    case IMG_WBMP: imagewbmp($sDestImage, $destination_path); break;
    }
    imagedestroy($srcImage);
    imagedestroy($sDestImage);
    return $destination_path;
    }

    else 
    { 
        return $urlimmagine; 
    } 
    

    }
    ?>

    [/php]