[AS3]as3.0处理加载透明gif,png图片代码示例(4)
第二种方法是把这种图片里的像素重新处理,只有不透明的像素才留下来 原图san.png 因为图片上传网站的原因把图片透明背景处理成淡蓝色的了 privatefunctioncopyImagExtendTransparent(bit:BitmapData):Sprite{ var
第二种方法是把这种图片里的像素重新处理,只有不透明的像素才留下来
原图san.png
因为图片上传网站的原因把图片透明背景处理成淡蓝色的了
- private function copyImagExtendTransparent(bit:BitmapData):Sprite{
- var _width:uint=bit.width;
- var _height:uint=bit.height;
- var ht:Sprite=new Sprite();
- for(var x:uint=0;x<_width;x++){
- for(var y:uint=0;y<_height;y++){
- if(bit.getPixel32(x,y)){
- var aphaValue:uint=bit.getPixel32(x,y) >> 24 & 0xFF;
- ht.graphics.beginFill(bit.getPixel(x,y),aphaValue/255);
- ht.graphics.drawRect(x,y,1,1);
- ht.graphics.endFill();
- }
- }
- }
- return ht;
- }
处理完的图片效果和原图一样 不过在透明位置不会效应鼠标事件,图片的宽高也不包括透明位置
- private function getImageBorder(bit:BitmapData):Sprite{
- var _width:uint=bit.width;
- var _height:uint=bit.height;
- var ht:Sprite=new Sprite();
- ht.graphics.beginFill(0);
- for(var x:uint=0;x<_width;x++){
- for(var y:uint=0;y<_height;y++){
- if(bit.getPixel32(x,y)){
- if(!bit.getPixel32(x-1,y)||!bit.getPixel32(x,y-1)||!bit.getPixel32(x+1,y)||!bit.getPixel32(x,y+1)){
- ht.graphics.drawRect(x,y,1,1);
- }
- }
- }
- }
- ht.graphics.endFill();
- return ht;
- }
获取图片的边框
- private function copyNoAphaImag(bit:BitmapData):Sprite{
- var minx:uint=100000;
- var miny:uint=100000;
- var pointXArray:Array=new Array();
- var pointYArray:Array=new Array();
- var _width:uint=bit.width;
- var _height:uint=bit.height;
- for(var x:uint=0;x<_width;x++){
- for(var y:uint=0;y<_height;y++){
- if(bit.getPixel32(x,y)){
- minxminx=minx>x?x:minx;
- minyminy=miny>y?y:miny;
- pointXArray.push(x);
- pointYArray.push(y);
- }
- }
- }
- var ht:Sprite=new Sprite();
- ht.graphics.beginFill(0);
- var _length:uint=pointXArray.length;
- for(var i:uint=0;i<_length;i++){
- ht.graphics.drawRect(pointXArray[i]-minx,pointYArray[i]-miny,1,1);
- }
- ht.graphics.endFill();
- ht.x=minx;
- ht.y=miny;;
- return ht;
- }
这个方法得到图片和第一个方法外表看没有差别,但第一个图片的X,Y值是0,0.而这个X,Y值则是剔除透明区域后,图片仍在原位置时所需的X,Y值,更符合现实逻辑。感兴趣的同学可以分别输出他俩的宽高和X,Y值,比较一下。( 云卷云舒 )
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...