flash位图技术研究篇(5):像素画
2010-03-02 00:00:00 来源:WEB开发网今天光顾了外国的某一些博客对位图的应用,发现对位图的操作会变化出很多很多效果,其中一篇是像素画的实现,借助这种对位图的像素操作应用,重新组合成新的图片,然后拼合成一张新的图片。
思路很简单。借用这种手法应用对一些效果会很大帮助。如聚合与分散的像素动画。
查看原图(大图)
左边是一张正常的,而右边是一张经过像素处理的灰太狼的图片。
通过外部加载回来的图片,获取到数据源,通过这个数据源我们可以借用bitmapdata 类的获取像素的值的操作,每一个像素包含RBG的值,通过getPixel(x,y)能够对位图进行像素获取。然后进行填充使用。最后产生出右边像素的画面的效果。主要涉及的方法应用是
两个循环获取像素的的值。
//进行像素获取,重组像素
for (var i:int=0; i<Width; i+=step)
{
for (var j:int=0; j<Height; j+=step)
{
var color:uint=bmpData.getPixel(i,j);
var rect:Rectangle=new Rectangle(i,j,step,step);
bmpData.fillRect(rect,color);//填充像素
}
}
下面是实现过程,最主要了解到getPixel这个方法使用即可。
1. package
2. {
3. import flash.display.Sprite;
4. import flash.display.Loader;
5. import flash.display.Bitmap;
6. import flash.display.BitmapData;
7. import flash.events.*;
8. import flash.net.*;
9. import flash.geom.Rectangle;
10. public class Main extends Sprite
11. {
12. private var loader:Loader;
13. private var url:String="3.jpg";
14. private var step:int=5;
15. public function Main()
16. {
17. init();
18. }
19. //初始化
20. private function init():void
21. {
22. loader=new Loader();//外部加载一张图片
23. loader.load(new URLRequest(url));
24. loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
25. }
26. private function onComplete(event:Event):void
27. {
28.
29. var Width:Number=loader.content.width;
30. var Height:Number=loader.content.height;
31. addChild(new Bitmap(Bitmap(loader.content).bitmapData));
32.
33. var bmpData:BitmapData=new BitmapData(Width,Height,false,0xffffff);//新建一个空白的位图数据
34. bmpData.draw(loader);//获取影像
35.
36. //进行像素获取,重组像素
37. for (var i:int=0; i<Width; i+=step)
38. {
39. for (var j:int=0; j<Height; j+=step)
40. {
41. var color:uint=bmpData.getPixel(i,j);
42. var rect:Rectangle=new Rectangle(i,j,step,step);
43. bmpData.fillRect(rect,color);//填充像素
44. }
45. }
46. //显示到列表菜单
47. var bitmap:Bitmap=new Bitmap(bmpData);
48. bitmap.x=Width;
49. addChild(bitmap);
50.
51. }
52. }
53. }
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接