回答
var n:Number = 1/3;
var matrix:Array = [n,n,n,0,0,
n,n,n,0,0,
n,n,n,0,0,
0,0,0,1,0];
var cmf:ColorMatrixFilter = new ColorMatrixFilter(matrix);
bitmap.filters = [cmf];
在一般情况下,假设你开始与RGB图像,将其转换为HSI色彩空间,并使用我(强度)组件。
要将图像转换为灰度图,需要遍历图像缓冲区中的每个像素,并将R,G和B分量平均到一个实体中,然后复制三次以获得新颜色。伪代码(假设8位颜色):
for each pixel in buffer:
pixel.rgb = ((pixel.red + pixel.green + pixel.blue)/3) * 0x010101;
我相信你可以用Adobe的PixelBender做些事情来达到这个目的。
或者,强度有时被定义为max(R,G,B)。 – Dima 2009-12-03 23:34:09
应用通过该方法为DisplayObject包含您在黑色和白色想要的图像创建的滤波器:
public static function createBlackAndWhiteFilter():ColorMatrixFilter {
var rLum:Number = 0.2225;
var gLum:Number = 0.7169;
var bLum:Number = 0.0606;
var bwMatrix:Array = [rLum, gLum, bLum, 0, 0, rLum, gLum, bLum, 0, 0, rLum, gLum, bLum, 0, 0, 0, 0, 0, 1, 0];
return new ColorMatrixFilter(bwMatrix);
}//createBlackAndWhiteFilter
即使我完全不理解,我也会试试这个! 但是: 对于具体数值代表什么,为什么数组中有20个必需的值? 也许我不应该问很多,只是使用它...:-J – algro 2009-12-04 08:18:00
数组中的20个值是制作一个5x4的矩阵,它实际上与alecmce在同一个问题中发布的矩阵几乎相同,只是写了它在一条线上。不同的值与我知道的每种组分颜色的不同光强度有关。所以你在不同的措施中减少每种颜色的强度,使每个颜色变成灰色阴影。 – LopSae 2009-12-05 03:06:11
@alecmce:我们不能评论彼此的答案,因为我们还没有50个声望(这限制了我们只对自己的答案发表评论)。是的,大部分答案都是相同的,我刚才发现了这个答案。对于那个很抱歉。我发现真正令人困惑的是,使用矩阵与1/3,与1,我的矩阵产生完全相同的效果,没有不同的阴影,没有不同的强度......所以实际值真的很重要的东西? – LopSae 2009-12-05 03:23:32
- 1. CSS:如何将彩色图像变成灰色或黑色/白色图像
- 2. 如何在Android中将彩色图像制作成黑白色
- 3. Java OpenCV:如何将彩色图像转换为黑白图像?
- 4. 使图像变成黑色和白色?
- 5. 如何识别图像是黑白还是彩色图像?
- 6. 确定图像是黑白图像还是彩色图像
- 7. jQuery的 - 黑白图像的彩色图像(悬停)
- 8. 如何将彩色TIFF图像转换为黑白使用BitMiracle.LibTiff.Silverlight.dll
- 9. 如何在iOS 6.0中将彩色图像更改为黑白图像?
- 10. 如何使用PHP将“真彩色”图像转换为“黑白”图像?
- 11. 如何将彩色图像转换为纯黑白图像(0-255格式)
- 12. 转换彩色图像转换成黑白图像使用PHP GD库
- 13. Python图像库黑白两色图像
- 14. Zend_PDF drawImage将图像变成黑色
- 15. 将彩色指纹图像转换为黑白
- 16. 如何将彩色图像位图转换为android中的黑白图像位图?
- 17. 有彩色图像的SURF_CUDA实现吗?
- 18. 使图像变成黑白悬停
- 19. 渐变彩色图像
- 20. 有没有什么办法可以检测图像是黑白图像还是彩色图像?
- 21. 从黑白到彩色的CSS过渡图像
- 22. 将粒子分割成黑白图像
- 23. 如何将图像变成黑/白,然后在Safari上悬停着色?
- 24. 如何将图像的颜色更改为android中的黑白图像
- 25. 如何将kinect的深度图像与彩色图像对齐
- 26. jcrop变成透明图像黑色
- 27. Java旋转图像变成全黑色?
- 28. PNG图像呈现黑色
- 29. OpenGL ES着色器将彩色图像转换为黑白红外?
- 30. SDL生成黑色图像
不是LopSae和我的完全一样,只是它调整了光度值?为什么我不能评论LopSae的答案?非常奇怪...... 对于矩阵中的每个值所做的操作,请参阅: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/filters/ColorMatrixFilter.html – alecmce 2009-12-04 10:29:17
@LopSae - 我是新的StackOverflow,还没有完全制定出所有的特质,谢谢! ;)您看到的差异可能非常微妙,取决于源图像。如果您使用的是相对明亮,大胆的颜色的测试图像,那么与具有微妙阴影的图像相比,不同的值将具有更少的可见效果... – alecmce 2009-12-05 15:16:20
它的数学并不太难......对于每个像素,它将采用像素颜色的红色,绿色和蓝色分量,并将它们乘以矩阵中的第一个第二个和第三个元素(在我的例子中为1/3,在您的情况下为0.2,0.7,0.1),将它们加在一起并把这个结果作为红色值。然后,它采用与像素颜色相同的分量,并将它们乘以矩阵中的第六,第七和第八个元素,然后将它们设置为绿色。类似于第11,12和13日的蓝色。这会产生灰度,因为在结果中红色,绿色和蓝色的部分是相同的。 – alecmce 2009-12-05 15:20:14