2016-07-22 160 views
0

我已經閱讀堆棧溢出,裏面有所有相關的問題進行組的字黑色和白色單色。這些帖子討論了兩個常見問題之一:灰度黑白

我做不是想要我的輸出圖像在黑色只;但是,我想要更多。我想在一個色,這是一個給定的變量,例如我的輸出畫面:$MyColor = #336699;$MyColor = #3366CC; ...

所以,我的問題是複製任何存在的問題。如何使用PHP將「真彩色」圖像轉換爲「單色」圖像?


首先,我有一個原始圖像,這是一個真彩色圖像。它被保存在JPEG格式:

*#1*. The original image.

這種原始圖片有:顏色。


然後,我可以把它轉換成灰度圖像,運行這個簡單的腳本後:

<?php 

$source_file = "1.JPG"; 

$im = ImageCreateFromJpeg($source_file); 

$imgw = imagesx($im); 
$imgh = imagesy($im); 

for ($i=0; $i<$imgw; $i++) 
{ 
     for ($j=0; $j<$imgh; $j++) 
     { 

       // Get the RGB value for current pixel 

       $rgb = ImageColorAt($im, $i, $j); 

       // Extract each value for: R, G, B 

       $rr = ($rgb >> 16) & 0xFF; 
       $gg = ($rgb >> 8) & 0xFF; 
       $bb = $rgb & 0xFF; 

       // Get the value from the RGB value 

       $g = round(($rr + $gg + $bb)/3); 

       // Gray-scale values have: R=G=B=G 

       $val = imagecolorallocate($im, $g, $g, $g); 

       // Set the gray value 

       imagesetpixel ($im, $i, $j, $val); 
     } 
} 

header('Content-type: image/jpeg'); 
imagejpeg($im); 

?> 

而且,下面是結果:

*#2*. The gray-scale image.

此灰度圖片有:顏色。


現在,我想將其轉換成真正的一個色圖像:

*#3*. The one-color image.

這一種顏色的圖片有:顏色。

在這種情況下,$MyColor = #000000;


你能告訴我:如何真彩色圖像轉換爲單色圖像,用PHP

+0

如果有一個與我的問題有任何問題,請後下。我會讀它;那麼,我會改進它。 – 16ctt1x

+0

提示您搜索:「抖動」 –

+0

它也被投票關閉。主要是因爲你自己沒有做過研究,你只是要求教程 –

回答

1

僅有兩行的代碼將處理的灰度變換和縮小圖像僅兩種顏色(因爲一彩色圖像是空白畫布)中,用抖動:

$img = imagecreatefromjpeg('./38519049.jpg'); 

imagefilter($img, IMG_FILTER_GRAYSCALE); // convert to grey scale. 
imagetruecolortopalette($img, true, 2); // 'true' for dithering, '2' for number of colours. 

header('Content-type: image/jpeg'); 
imagejpeg($img); 

結果:

enter image description here

+0

是的,它完美的工作! – 16ctt1x

相關問題