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

    imagecreatefrompng e PNG trasparenti

    Lavorando con le GD e png a sfondo trasparente, ottengo, quando inserisci un apng trasparente appunto, in 'altra immagine uno sfondo nero

    codice:
    	switch ($estensione[1]){ 		
    case "jpg": 			
    $image2 = imagecreatefromjpeg($filename2); 		
    break;  		
    case "png": 			
    $image2 = imagecreatefrompng($filename2); 			 		
    break; 	
    } 	
    //    calcolo posizione      
    $destra=$larghezza-$new_width2-$distanza_bordo_x;     
    $top=$distanza_bordo_y; 	
    
      
    imagecopyresampled($newimage, $image2, $destra,$top, 0, 0, $new_width2, $new_height2,$width2, $height2);
    ....
    come si fa a preservare lo sfondo in modo che rewsti rasparente?
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    Mi capitò lo stesso problema quando scrissi una classe per il ridimensionamento di immagini. Trovai del codice (non ricordo dove) che mi risolse il problema che le png e le gif trasparenti venivano ridimensionate con sfondo nero.

    Ti posto il mio codice brutalmente, ovviamente andrà aggiustato per il tuo caso

    Codice PHP:
    $image_resized imagecreatetruecolor($final_width$final_height);
           
    if ((
    $this->image_type == IMAGETYPE_GIF) || ($this->image_type == IMAGETYPE_PNG) ) 
    {
        
    $trnprt_indx imagecolortransparent($image);
       
        
    // If we have a specific transparent color
        
    if ($trnprt_indx >= 0
        {
            
    // Get the original image's transparent color's RGB values
            
    $trnprt_color imagecolorsforindex($image$trnprt_indx);
       
            
    // Allocate the same color in the new image resource
            
    $trnprt_indx imagecolorallocate($image_resized$trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
       
            
    // Completely fill the background of the new image with allocated color.
            
    imagefill($image_resized00$trnprt_indx);
       
            
    // Set the background color for new image to transparent
            
    imagecolortransparent($image_resized$trnprt_indx);     
        }
            
        
    // Always make a transparent background color for PNGs that don't have one allocated already
        
    elseif ($this->image_type == IMAGETYPE_PNG
        {
            
    // Turn off transparency blending (temporarily)
            
    imagealphablending($image_resizedfalse);
               
            
    // Create a new transparent color for image
            
    $color imagecolorallocatealpha($image_resized000127);
                       
            
    // Completely fill the background of the new image with allocated color.
            
    imagefill($image_resized00$color);
                       
            
    // Restore transparency blending
            
    imagesavealpha($image_resizedtrue);
        }
    }

    imagecopyresampled($image_resized$image0000$final_width$final_height$this->width$this->height); 
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  3. #3

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.