2011-03-08 33 views
1

我有一个代码,可以根据输入值调整图像的大小和颜色...问题是,我只能使用其他应用程序保存的新图像着色一次。请帮助我..我希望有很多PHP expers在这里.....如何使用GD对PHP结果图像进行着色使用GD

<?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"); 
} 
?> 
+0

您应该提供一些代码,并更好地解释问题。很难理解你想要问什么。 – nico 2011-03-08 17:21:25

+0

请详细解释“colorize”是什么意思。理想情况下,一个“之前/之后”屏幕截图 – 2011-03-08 17:21:28

+1

等待让我准备我的问题的短版本.....感谢您的快速响应... – Bagan 2011-03-08 17:22:56

回答

0

听起来像你对我的处理图像资源和输出,然后想回去,并进一步对其进行操作而不必从头开始。您可以通过

a)将图像资源保存为会话变量,然后在随后的更改中使用会话变量。 b)在输出之前保存已更改的图像,然后打开已保存的已更改图像并从那里开始。我不知道你使用的是什么文件类型,但例如你的代码应该使用imagegif()输出图像的gif图像。你会利用这个相同的功能(或其他图像类型等效功能)来保存图像。

+0

上面的代码工作正常没有问题...但我们在调整大小之前首先为图像着色...这是问题... – Bagan 2011-03-08 18:15:23

+0

我需要先调整大小,然后为png着色....你明白了吗? – Bagan 2011-03-08 18:15:59

+0

所以你说你的脚本首先输出原始图像,接受输入来调整它的大小,然后输出调整大小的图像,现在你想接受输入重新着色,使用调整大小的图像?那么是的,你需要使用所描述的方法之一来保存更改后的图像。 – 2011-03-08 18:20:21