每天学一点flash(64) 彩色位图转换黑白照
2009-12-24 10:55
323 查看
今天看了外国一篇文章,觉得很有意思,于是在这里记录一下。彩色图转换成黑白照。在ps 要是将彩色的图转换黑白照的方式只是需要简单的动作。而在flash 处理起来也非常简单。
先选择一张喜欢的图片,然后进行处理。例如这张照片,图片中的是一个很不错的靓女。呵呵
现在通过一段代码:就可以进行转换成黑白的照片:
在这个过程中,其实对每一个像素点进行修改,才会产生这种效果。我们通过扫描来获取每一个像素点的值。然后利用位图的API修改每一个值产生这种结果。
当中的关键地方,在于对
进行获取每一个像素点的值。RGB的值,然后再根据位运算来确定这种效果。
主要的API:
setPixel(x:int, y:int, color:uint):void
设置 BitmapData 对象的单个像素。
getPixel(x:int, y:int):uint
返回一个整数,它表示 BitmapData 对象中在特定点 (x, y) 处的 RGB 像素值。
其他注意的地方:若是没有对图片进行修改尺寸的话,那么原先
for (var i:uint=0; i<bit.bitmapData.height; i++)
可以改成for (var i:uint=0; i<bit.height; i++)
否则就不可以.
其中0xff 和0xffffff 原本以为是一样,但是经过测试的结果,发现0xff 代表了0--255 的颜色,也就是常见的RPG值。
0xfffff 输出的结果16777215。 结果就显然不一样了。
大家不妨去测试一下。
有意思的是(pixelValue &0xff)<<16 这些通过位运算再移位的计算产生的结果为什么会产生黑白的效果呢?
黑白效果像素值是多少? 呢
如果想到不妨告诉我。
下面是通过扩展BItmap 类进行封装调用
测试:
先选择一张喜欢的图片,然后进行处理。例如这张照片,图片中的是一个很不错的靓女。呵呵
现在通过一段代码:就可以进行转换成黑白的照片:
在这个过程中,其实对每一个像素点进行修改,才会产生这种效果。我们通过扫描来获取每一个像素点的值。然后利用位图的API修改每一个值产生这种结果。
test(); function test():void { trace(0xff); trace(0xffffff); var bit:Bitmap=new Bitmap(new Myclass(0,0)); addChild(bit); bit.width=225; bit.height=336; for (var i:uint=0; i<bit.bitmapData.height; i++) { for (var j:uint=0; j<bit.bitmapData.width; j++) { var pixelValue:uint = bit.bitmapData.getPixel(j, i); bit.bitmapData.setPixel(j,i,(pixelValue &0xff)<<16 | (pixelValue &0xff)<<8 |(pixelValue & 0xff)); } } }
当中的关键地方,在于对
var pixelValue:uint = bit.bitmapData.getPixel(j, i); bit.bitmapData.setPixel(j,i,(pixelValue &0xff)<<16 | (pixelValue &0xff)<<8 |(pixelValue & 0xff));
进行获取每一个像素点的值。RGB的值,然后再根据位运算来确定这种效果。
主要的API:
setPixel(x:int, y:int, color:uint):void
设置 BitmapData 对象的单个像素。
getPixel(x:int, y:int):uint
返回一个整数,它表示 BitmapData 对象中在特定点 (x, y) 处的 RGB 像素值。
其他注意的地方:若是没有对图片进行修改尺寸的话,那么原先
for (var i:uint=0; i<bit.bitmapData.height; i++)
可以改成for (var i:uint=0; i<bit.height; i++)
否则就不可以.
其中0xff 和0xffffff 原本以为是一样,但是经过测试的结果,发现0xff 代表了0--255 的颜色,也就是常见的RPG值。
0xfffff 输出的结果16777215。 结果就显然不一样了。
大家不妨去测试一下。
有意思的是(pixelValue &0xff)<<16 这些通过位运算再移位的计算产生的结果为什么会产生黑白的效果呢?
黑白效果像素值是多少? 呢
如果想到不妨告诉我。
下面是通过扩展BItmap 类进行封装调用
package { import flash.display.Bitmap; import flash.display.BitmapData; public class BitmapEx extends Bitmap { public function BitmapEx(bitmapdata:BitmapData=null) { super(bitmapdata,"auto",false); } //转换黑白照 public function ConvertToBW(Width:Number,Height:Number):void { for (var i:uint=0; i<Height; i++) { for (var j:uint=0; j<Width; j++) { var pixelValue:uint = this.bitmapData.getPixel(j, i); this.bitmapData.setPixel(j,i,(pixelValue &0xff)<<16 | (pixelValue &0xff)<<8 |(pixelValue & 0xff)); } } } } }
测试:
var bitmap:BitmapEx=new BitmapEx(new Myclass(0,0)); bitmap.width=225; bitmap.height=336; addChild(bitmap); bitmap.ConvertToBW(bitmap.bitmapData.width,bitmap.bitmapData.height);
相关文章推荐
- 每天学一点flash(64) 彩色位图转换黑白照
- 每天学一点flash(69) 保存PNG位图
- 每天学一点flash(69) 保存PNG位图
- 每天学一点flash(68) 新闻列表制作(3)
- 每天学一点flash(70)应景写个360 VsQQ
- 每天学一点flash(82) jsfl 的swf窗口面板
- 每天学一点flash(54)输入文本显示光标
- 每天学一点flash(67) 上传图片(3)
- 每天学一点flash(54)开关式逻辑设计
- 每天学一点flash(57)随机抽取
- 每天学一点flash(69)菱形地图常见的情况
- 每天学一点flash(42) 参数方程在flash中的应用
- 每天学一点flash(68)FTE文本引擎(一)
- 每天学一点flash(5) actionscript 3.0 外部加载mp3音乐
- 每天学一点flash(7) Adobe Flash 的竞争意识
- 每天学一点flash (8)as3.0 外部加载xml 初探
- 每天学一点flash(10) flash 8外部加载文本
- 每天学一点flash(14) as3.0 处理xml (官方)
- 每天学一点 flash(18) flash cs3.0 打包air程序的路径问题
- 每天学一点flash (20) flash cs3.0 外部加载图片