Midwest PHP Call For Papers Open

imagepalettetotruecolor

(PHP 5 >= 5.5.0, PHP 7)

imagepalettetotruecolorПреобразует изображение на основе палитры в настоящий цвет

Описание

imagepalettetotruecolor ( resource $src ) : bool

Преобразует на основе палитры изображение, созданное функцией, такой как imagecreate() до настоящего (true) цвета изображения, как imagecreatetruecolor().

Список параметров

image

Ресурс изображения, возвращаемый одной из функций создания изображений, например, такой как imagecreatetruecolor().

Возвращаемые значения

Возвращает TRUE, если преобразование завершено, или если исходное изображение уже является изображением настоящего цвета, в противном случае возвращается FALSE.

Примеры

Пример #1 Конвертирует любой ресурс изображения в настоящий цвет

<?php
// Для обратной совместимости
if(!function_exists('imagepalettetotruecolor'))
{
    function 
imagepalettetotruecolor(&$src)
    {
        if(
imageistruecolor($src))
        {
            return(
true);
        }

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

        
imagecopy($dst$src0000imagesx($src), imagesy($src));
        
imagedestroy($src);

        
$src $dst;

        return(
true);
    }
}

// Анонимная функция-помощник
$typeof = function() use($im)
{
    echo 
'typeof($im) = ' . (imageistruecolor($im) ? 'true color' 'palette'), PHP_EOL;
};

// Создание изображения на основе палитры
$im imagecreate(100100);
$typeof();

// Преобразовать в настоящий цвет
imagepalettetotruecolor($im);
$typeof();

// Освободить память
imagedestroy($im);
?>

Результат выполнения данного примера:

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

Смотрите также

  • imagecreatetruecolor() - Создание нового полноцветного изображения
  • imageistruecolor() - Определяет, является ли изображение полноцветным

add a note add a note

User Contributed Notes 3 notes

up
2
Polda18
5 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
2 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
5 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