文字

imagepalettetotruecolor

(PHP 5 >= 5.5.0, PHP 7)

imagepalettetotruecolorConverts a palette based image to true color

说明

bool imagepalettetotruecolor ( resource $src )

Converts a palette based image, created by functions like imagecreate() to a true color image, like imagecreatetruecolor() .

参数

image

由图象创建函数(例如 imagecreatetruecolor() )返回的图象资源。

返回值

Returns TRUE if the convertion was complete, or if the source image already is a true color image, otherwise FALSE is returned.

范例

Example #1 Converts any image resource to true color

<?php
// Backwards compatiblity
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 ));
        
imagedestroy ( $src );

        
$src  $dst ;

        return(
true );
    }
}

// Helper closure
$typeof  = function() use( $im )
{
    echo 
'typeof($im) = '  . ( imageistruecolor ( $im ) ?  'true color'  'palette' ),  PHP_EOL ;
};

// Create a palette based image
$im  imagecreate ( 100 100 );
$typeof ();

// Convert it to true color
imagepalettetotruecolor ( $im );
$typeof ();

// Free the memory
imagedestroy ( $im );
?>

以上例程会输出:

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

参见

  • imagecreatetruecolor() - 新建一个真彩色图像
  • imageistruecolor() - 检查图像是否为真彩色图像

用户评论:

[#1] Polda18 [2014-04-30 14:44:20]

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);

[#2] walf [2014-03-21 06:20:15]

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($dstfalse);//prevent blending with default black
        
$transparent imagecolorallocatealpha($new_image255255255127);//change the RGB values if you need, but leave alpha at 127
        
imagefilledrectangle($dst00$imagesx($src), imagesy($src), $transparent);//simpler than flood fill
        
imagealphablending($dsttrue);//restore default blending

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

        
$src $dst;
        return 
true;
    }
}
?>

上一篇: 下一篇: