2011-03-08 65 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