Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Ridimensionamento Immagini PNG... sfondo nero

    Salve
    vi faccio vedere una mia funzione (mia si fa per dire... l'ho scopiazzata e riadattata).

    Codice PHP:
    function make_thumb($img_name$filename$new_w$new_h)
    {
        
    // flag per decidere se l'immagine è stata ridimensionata o no
        
    $resized true;
        
        
    // ricavo l'estensione
        
    $ext getExtension($img_name);
        
    // creo la nuova immagine tramite la GCD Library - solo GIF, JPG e PNG
        
    if(!strcmp("jpg",$ext) || !strcmp("jpeg",$ext))
            
    $src_img imagecreatefromjpeg($img_name);
        
        if(!
    strcmp("png",$ext))
            
    $src_img imagecreatefrompng($img_name);
            
        if(!
    strcmp("gif",$ext))
            
    $src_img imagecreatefromgif($img_name);
        
        
    // ricavo le dimensioni dell'immagine
        
    $old_x imagesx($src_img);
        
    $old_y imagesy($src_img);
        
        if(
    $old_x<=$new_w && $old_y<=$new_h)
        {
            
    $resized=false;
        }
        else
        {
            
    $ratio1 $old_x/$new_w;
            
    $ratio2 $old_y/$new_h;

            if(
    $ratio1>$ratio2
            {
                
    $thumb_w $new_w;
                
    $thumb_h $old_y/$ratio1;
            }
            else
            {
                
    $thumb_w $old_x/$ratio2;
                
    $thumb_h $new_h;
            }
        
            
    $dst_img ImageCreateTrueColor($thumb_w$thumb_h);

            
    imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w$thumb_h,$old_x$old_y);
        }

        if(
    $resized)
        {    
            if(!
    strcmp("png","$ext"))
                
    imagepng($dst_img,$filename);
        
            if(!
    strcmp("gif","$ext"))
                
    imagegif($dst_img,$filename);
            
            if(!
    strcmp("jpg","$ext") || !strcmp("jpeg","$ext"))
                
    imagejpeg($dst_img,$filename);
        
            
    imagedestroy($src_img);
            
    imagedestroy($dst_img);
        }
        else
        {
            if(!
    strcmp("png","$ext"))
                
    imagepng($src_img,$filename);
        
            if(!
    strcmp("gif","$ext"))
                
    imagegif($src_img,$filename);
            
            if(!
    strcmp("jpg","$ext") || !strcmp("jpeg","$ext"))
                
    imagejpeg($src_img,$filename);
        
            
    imagedestroy($src_img);
        }

    Il problema: se ridimensiono immagini .png (trasparenti magari) mi ci inserisce uno sfondo nero.
    Immagino ci sia un qualche parametro di una qualche funzione che dice "sfondo bianco".. ma non saprei dove..

    idee brillanti ben accette!
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  2. #2
    Prova sostituendo
    Codice PHP:
    $dst_img ImageCreateTrueColor($thumb_w$thumb_h);

    imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w$thumb_h,$old_x$old_y); 
    con
    Codice PHP:
    $dst_img imagecreatetruecolor($thumb_w$thumb_h);
    imagealphablending($dst_imgfalse);

    imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w$thumb_h,$old_x$old_y);
    imagesavealpha($dst_imgtrue); 

  3. #3
    Grazie della dritta... purtroppo non funziona manco così.

    Funziona meglio di prima... solo che adesso invece che nero mi viene del colore dell'immagine principale (ad esempio verde, se l'immagine è una freccia verde su fondo bianco).

    Pazienza!! Non carico i png!
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  4. #4
    il problema è relativamente semplice

    Siccome tu hai delle immagini sorgenti che hanno trasparenza (tramite ALPHA o trasparenza su un colore [usato con le immagini a 8 bit, ergo GIF o PNG-8 (anch'esse fanno uso di un indice dei colori) devi testare e verificare in base a dei valori quale dei sistemi utilizzare e quindi andarli ad applicare sull'immagine di destinazione

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.