Onelong

分享知识,与你一起进步......
RSS icon Home icon
  • ActionScript3 做个简单的图片压缩

    post by onelong / 2010-4-19 16:57 Monday [MXML/ActionScript3.0]
    源码如下:
    package
    {
    	import flash.display.Bitmap;
    	import flash.display.BitmapData;
    	import flash.display.Loader;
    	import flash.display.Sprite;
    	import flash.display.StageAlign;
    	import flash.display.StageScaleMode;
    	import flash.events.Event;
    	import flash.events.MouseEvent;
    	import flash.geom.Matrix;
    	import flash.net.FileReference;
    	import flash.net.URLRequest;
    	import flash.utils.ByteArray;
    	
    	public class JPG extends Sprite
    	{
    		private var bmpData:BitmapData;
    		private var loader:Loader;
    		private var targetWidth:uint=100;//缩放后图片的宽度
    		private var targetHeight:uint=100;//缩放后图片的高度
    		public function JPG()
    		{
    			init();
    		}
    		private function init():void{
    			stage.scaleMode=StageScaleMode.NO_SCALE;
    			stage.align=StageAlign.TOP_LEFT; 
    			
    			loader = new Loader();
    			loader.load(new URLRequest("2.jpg")); 
    			loader.contentLoaderInfo.addEventListener
                           (Event.COMPLETE, completeHandler); 
    
    			
    		}
    		private function completeHandler(event:Event):void{ 
    			var LW:uint=loader.width;
    			var LH:uint=loader.height;
    			loader.scaleX=targetWidth/LW;
    			loader.scaleY=targetHeight/LH; 
    			var sprite:Sprite=new Sprite();
    			sprite.addChild(loader);
    			addChild(sprite);
    			bmpData = new BitmapData(sprite.width,sprite.height);
    			bmpData.draw(sprite); 
    			var bmp:Bitmap = new Bitmap(bmpData);
    			stage.addEventListener(MouseEvent.CLICK,onClick);
    			this.addChild(bmp);
    		} 
    		private function onClick(evt:MouseEvent):void{
    			
    			var jpg:ByteArray=new JPGEncoder(80).encode(bmpData);
    			new FileReference().save(jpg,"ggg.jpg");
    		}
    	}
    }
    
    

    其实draw方法还可以用来做截图的!!

    引用地址:
     

    评论:

    1. Y.Boy
      在 init() 方法里有两句:
      loader.load(new URLRequest("2.jpg"));
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

      这两句的顺序应该要调转:先监听,后加载。
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
      loader.load(new URLRequest("2.jpg"));
      博主回复:好!!谢谢了

    我要评论