回答
簡單地將灰度顏色舍入爲黑色或白色。
float gray = (r + g + b)/3
if(gray > 0x7F) return 0xFF;
return 0x00;
假設您的主機支持它,您可以將其映射到imagemagick。你想用什麼函數來決定一個像素應該是黑色還是白色?
找到對應的命令行功能: 轉換source.jpg -colors 2目的地.jpg – 2008-10-31 18:56:08
如果你打算自己做這個,你需要實現一個dithering algorithm。但正如@jonni所說,使用現有的工具會容易得多?
使用PHP gd庫:
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, -100);
檢查上面有更多的例子鏈接的用戶評論。
對於每個像素,您必須從顏色轉換爲灰度 - 類似 $ gray = $ red * 0.299 + $ green * 0.587 + $ blue * 0.114; (這些是NTSC加權因子;存在其他類似的加權因子,這模擬了眼睛對不同顏色的不同反應)。
然後,您需要決定一個截止值 - 通常是最大像素值的一半,但取決於圖像,您可能更喜歡更高的值(使圖像更暗)或更低(使圖像更亮)。
只是將每個像素與截止點進行比較會丟失很多細節 - 即大的黑色區域完全變黑 - 所以爲了保留更多信息,可以進行抖動。基本上,從圖像的左上角開始:對於每個像素,在比較截止值之前,將像素的誤差(原始值和最終分配值之間的差值)添加到左側和上方。
請注意,在PHP中執行此操作將會非常緩慢 - 您將會進一步提前找到提供此功能的庫。
$rgb = imagecolorat($original, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$gray = $r + $g + $b/3;
if ($gray >0xFF) {$grey = 0xFFFFFF;}
else { $grey=0x000000;}
該功能的工作就像一個魅力
public function ImageToBlackAndWhite($im) {
for ($x = imagesx($im); $x--;) {
for ($y = imagesy($im); $y--;) {
$rgb = imagecolorat($im, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$gray = ($r + $g + $b)/3;
if ($gray < 0xFF) {
imagesetpixel($im, $x, $y, 0xFFFFFF);
}else
imagesetpixel($im, $x, $y, 0x000000);
}
}
imagefilter($im, IMG_FILTER_NEGATE);
}
使用PHP GD庫:
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, 1000);
- 1. Java OpenCV:如何將彩色圖像轉換爲黑白圖像?
- 2. 瞭解畫布如何將圖像轉換爲黑白圖像
- 3. 在Tensorflow中將RGBA圖像轉換爲黑白圖像
- 4. 將JPEG圖像轉換爲黑白
- 5. 將灰度圖像轉換爲黑白
- 6. 如何使用PHP將「真彩色」圖像轉換爲「黑白」圖像?
- 7. 使用Aforge.Net將灰度圖像轉換爲黑白圖像
- 8. 使用python PIL將RGB圖像轉換爲純黑白圖像
- 9. 如何將彩色圖像轉換爲純黑白圖像(0-255格式)
- 10. 如何將彩色TIFF圖像轉換爲黑白使用BitMiracle.LibTiff.Silverlight.dll
- 11. 用OpenCV將圖像文件轉換成黑白圖像
- 12. 裁剪圖像,轉換爲黑白圖像並加以銳化
- 13. 轉換彩色圖像轉換成黑白圖像使用PHP GD庫
- 14. Qt中的圖像轉換器,黑白色的圖像
- 15. C#轉換圖像來完成黑白
- 16. 如何將彩色圖像位圖轉換爲android中的黑白圖像位圖?
- 17. 如何在Java中將圖像從顏色轉換爲黑白(灰度)
- 18. 將圖像轉換爲黑白圖像,同時保留Alpha通道
- 19. imagecopyresampled將圖像轉換爲黑色
- 20. Python - 刪除(轉換爲白色)圖像的非黑色像素
- 21. 將圖像轉換爲黑色和白色的問題C
- 22. 將圖像轉換爲黑白或棕褐色的c#
- 23. 將彩色指紋圖像轉換爲黑白
- 24. 將圖像轉換爲黑白(不是灰度)
- 25. 將黑白圖像轉換爲2d對象
- 26. 將Java小程序轉換爲黑白圖像
- 27. 將圖像轉換爲黑白問題CGContext - iPhone Dev
- 28. Pdfbox1.8.12將PDF轉換爲白頁圖像
- 29. PHP - 如何將矩形圖像轉換爲方形圖像?
- 30. 轉換黑白圖像爲白色透明
綠色通道被認爲比其他兩個更亮,對於灰度級來說更好的方程是:0.299R + 0.587G + 0.114B – Null303 2008-10-31 20:16:13
我們四捨五入成爲純黑色和純白色,因此這些重量無關緊要:-) – 2008-10-31 20:22:50
賈斯珀,它看起來確實很重要,因爲您轉換爲黑色或白色是基於測試的閾值*灰色*值。 – 2012-04-08 23:41:59