2010-08-21 10 views
7

¿Cuál es la mejor manera de reemplazar colores transparentes con blanco en imágenes gif y png con php?¿Cómo eliminar el color transparente en las imágenes?

// get transparent color indexes 
$trsp = ImageColorsForIndex($image, ImageColorTransparent($image)); 
// get transparent color set 
$delete = imagecolorallocate($image, $trsp['red'], $trsp['green'], $trsp['blue']); 
// replace 
imagecolorset($image, $delete, 255, 255, 255); 

does not working.

+0

bueno, y sin embargo, la pregunta – Latze

Respuesta

12

Realmente no uso mucho el GD, prefiero ImageMagick. El siguiente método funciona, pero no estoy seguro si es el más eficiente:

// Get the original image. 
$src = imagecreatefrompng('trans.png'); 

// Get the width and height. 
$width = imagesx($src); 
$height = imagesy($src); 

// Create a white background, the same size as the original. 
$bg = imagecreatetruecolor($width, $height); 
$white = imagecolorallocate($bg, 255, 255, 255); 
imagefill($bg, 0, 0, $white); 

// Merge the two images. 
imagecopyresampled(
    $bg, $src, 
    0, 0, 0, 0, 
    $width, $height, 
    $width, $height); 

// Save the finished image. 
imagepng($bg, 'merged.png', 0); 
+0

me gusta esta solución porque no intenta reemplazar colores si son un medio transparente, la el método se remuestrea de manera aditiva. –

Cuestiones relacionadas