回答
简单地将灰度颜色舍入为黑色或白色。
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. 了解画布如何将图像转换为黑白图像
- 2. 在Tensorflow中将RGBA图像转换为黑白图像
- 3. 将JPEG图像转换为黑白
- 4. 将灰度图像转换为黑白
- 5. 如何使用PHP将“真彩色”图像转换为“黑白”图像?
- 6. 使用python PIL将RGB图像转换为纯黑白图像
- 7. 如何将彩色图像转换为纯黑白图像(0-255格式)
- 8. 转换彩色图像转换成黑白图像使用PHP GD库
- 9. C#转换图像来完成黑白
- 10. 将图像转换为黑白图像,同时保留Alpha通道
- 11. 如何在Java中将图像从颜色转换为黑白(灰度)
- 12. 将图像转换为黑白问题CGContext - iPhone Dev
- 13. Pdfbox1.8.12将PDF转换为白页图像
- 14. 如何将黑白图像转换为python中的三维数组?
- 15. 如何将位图转换为图像
- 16. 如何将图像转换为图标?
- 17. 将网页图像更改为黑白
- 18. 将PDF转换为php中的图像
- 19. 如何将现有的彩色图像变成黑白图像?
- 20. 在iPhone转换图像为黑白,深褐色,灰度等SDK
- 21. 如何图像刷转换为图像
- 22. 如何将图像的颜色更改为android中的黑白图像
- 23. 为什么黑白图像在图像处理中会颠倒?
- 24. 将.png图像转换为.gif图像
- 25. 将图像转换为灰度图像
- 26. 将PIL图像转换为VIPS图像
- 27. 如何将索引图像转换为C#中的RGB图像?
- 28. 如何将图像转换为java中的透明图像
- 29. JPEG图像使用PHP转换PNG图像时转为全黑色
- 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