我環顧四周,但我找不到任何類似的問題。將顏色變成黑色,如果它的r + b> 150
在PHP中打開圖像後,我願意檢查每個像素,並且如果它們的紅色+綠色值低於150,我會將該像素變爲白色,而如果總和高於150,我會轉向該像素變黑。
這可能嗎?我試過imagefilter()
,但我無法按預期工作。也許有更適合使用的功能。
我環顧四周,但我找不到任何類似的問題。將顏色變成黑色,如果它的r + b> 150
在PHP中打開圖像後,我願意檢查每個像素,並且如果它們的紅色+綠色值低於150,我會將該像素變爲白色,而如果總和高於150,我會轉向該像素變黑。
這可能嗎?我試過imagefilter()
,但我無法按預期工作。也許有更適合使用的功能。
像
$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這是用戶想要的。但我會警告說,當你需要做這樣慢的事時,會出現問題。試着看看你是否不能使用上面提到的預建功能。 – Xeoncross 2012-02-24 16:21:53
看看使用imagecolorat函數(我認爲它可能是GD庫的一部分)。你可以從中獲得RGB。然後使用imagecolorset設置新的RGB。
在GD它可能很難做到這一點無需設置單個像素。你有沒有試過'Imagick :: whiteThresholdImage'和'Imagick :: blackThresholdImage'的組合? – Wrikken 2012-02-24 16:01:06
我該如何適應紅+綠> 150? – KingBOB 2012-02-24 16:18:59
我並不完全相信你可以,這兩點對我來說就像一個起點(因此,不是一個答案,只是一個評論)。 – Wrikken 2012-02-24 16:29:30