flex导出图片

阅读更多
flex导出图片功能通常是:

思路1:客户端将UIComponent转化为BitmapData,再转为ByteArray,将ByteArray上传到服务端,服务端发送文件到客户端。

然而,flex本来就是客户端的东西,为什么还要绕道服务端去呢,这不是化简单为复杂嘛,

思路2:客户端将UIComponent转化为BitmapData,再转为ByteArray,使用FileReference.save()直接在client端保存图片

(当然前提要求是:在flash player 10.0中)

package
{
	import flash.display.BitmapData;
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.net.FileReference;
	import flash.utils.ByteArray;
	
	import mx.controls.Alert;
	import mx.graphics.codec.PNGEncoder;
	
	public class ChartExport
	{
		static public var Instance:ChartExport=new ChartExport();
		
		public function ChartExport()
		{
		}
		public function exportChart(d:DisplayObject):void{
			
			var dt:DisplayObject = d;
			var bmpData:BitmapData = new BitmapData(d.width,d.height,true,0x00ffffff);
			bmpData.draw(d);
			
			var fr:Object = new FileReference();
			if(fr.hasOwnProperty("save"))
			{
				var encoder:PNGEncoder = new PNGEncoder();
				var data:ByteArray = encoder.encode(bmpData);
				fr.save(data,'chart.png');
			}
			else
			{
				Alert.show("当前flash player版本不支持此功能,请安装10.0.0以上版本!","提示");
			}
		}
	}
}

你可能感兴趣的:(flex导出图片)