imagepalettetotruecolor

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

imagepalettetotruecolorConvierte una imagen basada en una paleta a color verdadero

Descripción

imagepalettetotruecolor(GdImage $image): bool

Convierte una imagen basada en una paleta, creada por una función como imagecreate(), en una imagen en color verdadero, como imagecreatetruecolor().

Parámetros

image

Un objeto GdImage, retornado por una de las funciones de creación de imágenes, como imagecreatetruecolor().

Valores devueltos

Devuelve true si la conversión ha sido exitosa, o si la imagen de origen ya es de color verdadero, en caso contrario, devuelve false.

Historial de cambios

Versión Descripción
8.0.0 image expects a GdImage instance now; previously, a valid gd resource was expected.

Ejemplos

Ejemplo #1 Convierte cualquier objeto imagen a color verdadero

<?php
// Compatibilidad ascendente
if(!function_exists('imagepalettetotruecolor'))
{
function
imagepalettetotruecolor(&$src)
{
if(
imageistruecolor($src))
{
return(
true);
}

$dst = imagecreatetruecolor(imagesx($src), imagesy($src));

imagecopy($dst, $src, 0, 0, 0, 0, imagesx($src), imagesy($src));

$src = $dst;

return(
true);
}
}

// Utilización de una Closure
$typeof = function() use($im)
{
echo
'typeof($im) = ' . (imageistruecolor($im) ? 'true color' : 'palette'), PHP_EOL;
};

// Crea una imagen basada en una paleta
$im = imagecreate(100, 100);
$typeof();

// La convierte a color verdadero
imagepalettetotruecolor($im);
$typeof();

?>

El ejemplo anterior mostrará :

typeof($im) = palette
typeof($im) = true color

Ver también

add a note

User Contributed Notes 3 notes

up
1
Polda18
11 years ago
PHP ver 5.4.24 does not support this function (it has not been defined). To get rid of this, you must copy image resource to new image created by function imagecreatetruecolor();

Example with image loaded from GIF file:

$image = imagecreatefromgif("path/to/gif/file.gif"); //create an image from GIF
$width = imagesx($image); //get width of source image
$height = imagesy($image); //get height of source image
$image2 = imagecreatetruecolor($width,$height); //create new image of true colors with given width and height
imagecopy($image2,$image,0,0,0,0,$width,$height); //copy source image to new one

header("Content-Type: image/jpeg"); //set header for JPG image
imagejpg($image2); //render JPg image into browser

imagedestroy($image); //free up memory
imagedestroy($image2);
up
0
walf - iftfy
8 years ago
here the working version of walf's solution

<?php
// Backwards compatiblity
if (!function_exists('imagepalettetotruecolor')) {
function
imagepalettetotruecolor(&$src) {
if (
imageistruecolor($src)) {
return
true;
}

$dst = imagecreatetruecolor(imagesx($src), imagesy($src));

imagealphablending($dst, false);//prevent blending with default black
$transparent = imagecolorallocatealpha($dst, 255, 255, 255, 127);//change the RGB values if you need, but leave alpha at 127
imagefilledrectangle($dst, 0, 0, imagesx($src), imagesy($src), $transparent);//simpler than flood fill
imagealphablending($dst, true);//restore default blending

imagecopy($dst, $src, 0, 0, 0, 0, imagesx($src), imagesy($src));
imagedestroy($src);

$src = $dst;
return
true;
}
}
?>
up
-2
walf
11 years ago
The backwards compatibility example does not preserve transparency. You must first wipe out the default black background on the new image:

<?php
// Backwards compatiblity
if (!function_exists('imagepalettetotruecolor')) {
function
imagepalettetotruecolor(&$src) {
if (
imageistruecolor($src)) {
return
true;
}

$dst = imagecreatetruecolor(imagesx($src), imagesy($src));

imagealphablending($dst, false);//prevent blending with default black
$transparent = imagecolorallocatealpha($new_image, 255, 255, 255, 127);//change the RGB values if you need, but leave alpha at 127
imagefilledrectangle($dst, 0, 0, $imagesx($src), imagesy($src), $transparent);//simpler than flood fill
imagealphablending($dst, true);//restore default blending

imagecopy($dst, $src, 0, 0, 0, 0, imagesx($src), imagesy($src));
imagedestroy($src);

$src = $dst;
return
true;
}
}
?>
To Top