2012-02-24 51 views
4

我環顧四周,但我找不到任何類似的問題。將顏色變成黑色,如果它的r + b> 150

在PHP中打開圖像後,我願意檢查每個像素,並且如果它們的紅色+綠色值低於150,我會將該像素變爲白色,而如果總和高於150,我會轉向該像素變黑。

這可能嗎?我試過imagefilter(),但我無法按預期工作。也許有更適合使用的功能。

+2

在GD它可能很難做到這一點無需設置單個像素。你有沒有試過'Imagick :: whiteThresholdImage'和'Imagick :: blackThresholdImage'的組合? – Wrikken 2012-02-24 16:01:06

+0

我該如何適應紅+綠> 150? – KingBOB 2012-02-24 16:18:59

+0

我並不完全相信你可以,這兩點對我來說就像一個起點(因此,不是一個答案,只是一個評論)。 – Wrikken 2012-02-24 16:29:30

回答

3

$image = imagecreatefrompng($img); 
$xdim = imagesx($image); 
$ydim = imagesy($image); 
for ($x = 1; $x <= $xdim-1; $x++) { 
    for ($y = 1; $y <= $ydim-1; $y++) { 
     $rgb = imagecolorat($image, $x, $y); 
     if($rgb>150) 
      $color = 0x00; 
     else 
      $color = 0xFF; 
    } 
} 
+1

+1這是用戶想要的。但我會警告說,當你需要做這樣慢的事時,會出現問題。試着看看你是否不能使用上面提到的預建功能。 – Xeoncross 2012-02-24 16:21:53

3

看看使用imagecolorat函數(我認爲它可能是GD庫的一部分)。你可以從中獲得RGB。然後使用imagecolorset設置新的RGB。