如何使用GD着色PHP结果图像

时间:2011-03-08 17:19:47

标签: php gd colorize

我有一个代码,可以相应地调整图像颜色和颜色输入值...问题是我只能用其他应用程序保存的新图像着色一次。请帮助我..我希望有很多PHP表演者在这里......

<?php
createImage(50,50, 0,0, 255);
function createImage($width, $height, $nR, $nG, $nB)
{
$image = imagecreatefrompng("source.png");
imagealphablending($image, false);  
imagesavealpha($image, true);       

      //resize the image
      $new_image = imagecreatetruecolor($width, $height);
      imagealphablending($new_image, false); 
      imagesavealpha($new_image, true);
      imagecopyresampled($new_image, $image, 0, 0, 0, 0, $width, $height, imagesx($image), imagesx($image));

    //colorize the image
        $nrgb = str_pad(dechex($nR), 2, '0', STR_PAD_LEFT). str_pad(dechex($nG), 2, '0', STR_PAD_LEFT). str_pad(dechex($nB), 2, '0', STR_PAD_LEFT);              

       $newColor = $nrgb;

        $c2 = sscanf($newColor ,"%2x%2x%2x");

        for($i=0;$i<$width;$i++)
        {
            for($j=0;$j<$height;$j++)
            {
             $cIndex = imagecolorat($new_image,$i,$j);

             imagecolorset($new_image,$cIndex,$c2[0],$c2[1],$c2[2]);
            }
        }

        header("Content-Type: image/png");

        imagepng($new_image,"test.png");
}
?>

2 个答案:

答案 0 :(得分:0)

听起来像是在操纵图像资源并输出它然后想要返回并进一步操作它而不重新开始。你可以通过

来做到这一点

a)将图像资源保存为会话变量,然后在后续更改中使用会话变量。

b)在输出之前保存更改后的图像,然后打开保存的更改图像并从那里开始。我不知道你正在使用什么文件类型但是例如使用gif图像你的代码应该使用imagegif()来输出图像。您可以使用相同的功能(或其他图像类型等效功能)来保存图像。

答案 1 :(得分:0)

我建议查看此处的imagefilter函数:http://php.net/manual/en/function.imagefilter.php

查看该页面上的IMG_FILTER_COLORIZE