如何在AS3中将彩色位图的位图数据更改为黑白?
我正在为flash中的CMS开发一个简单的图像编辑器工具.
我正在为flash中的CMS开发一个简单的图像编辑器工具.
人们应该能够将上传的位图的颜色切换为黑白.我希望bitmapdata本身改变所以我可以用Adobe的JPGEncoder类将其写入ByteArray.
解决方法
这将是我认为最优雅的解决方案(源代码为BitmapData):
const rc:Number = 1/3,gc:Number = 1/3,bc:Number = 1/3; source.applyFilter(source.bitmapData,source.bitmapData.rect,new Point(),new ColorMatrixFilter([rc,gc,bc,rc,1,0]));
使用flash.geom :: Point和flash.filters :: ColorMaxtrixFilter …
ColorMatrixFilter允许很多东西,比如色调偏移,色彩,闪电,变暗和去饱和等等……否则BitmapData :: paletteMap和BitmapData :: colorTransform是很好的补充……
只是想注意,使用以下内容
const rc:Number = 1/3,gc:Number = 1/2,bc:Number = 1/6;
看起来更自然,因为主观上,#00FF00比#FF0000更亮,后者反过来比#0000FF更亮
那么祝你好运吧 …