[AS3]iteye.com并保存图片的源代码范例
[AS3]iteye.com并保存图片的源代码范例
[AS3]iteye.com并保存图片的源代码范例
1. 客户端生成BitmapData 对象。
2. 用JPGEncoder 对其编码相应的字节数组
3 用URLRequest和URLLoader发送数据。
4.服务用request.getInputStream()接收流..
5.保存为图片格式。
- package
- ...{
- import flash.geom.Point;
- import flash.geom.Rectangle;
- import flash.net.URLLoader;
- import flash.net.URLRequest;
- import flash.events.* ;
- import flash.display.*;
- import flash.geom.* ;
- import flash.net.*;
- import flash.utils.ByteArray;
- import com.wdxc.util.* ;
- public class Main extends Sprite
- ...{
- private var _picx:int = 0 ;
- private var _picy:int = 120 ;
- private var _picwidth = 0 ;
- private var _picheight = 0 ;
- private var _bitmapdata:BitmapData ;
- private var _rect:Sprite ;//裁剪区域
- private var _url:String ="http://192.168.0.211/test.jsp";
- public function Main():void...{
- this.loadPic("F:\a.jpg");
- this.init();
- }
- public function init():void ...{
- cut_btn.addEventListener(MouseEvent.MOUSE_DOWN, grabPic);
- save_btn.addEventListener(MouseEvent.MOUSE_DOWN, savePic) ;
- }
- /** *//****
- * 装载图片
- * @param picurl
- */
- public function loadPic(picurl:String):void...{
- if (picurl == null || picurl == "")
- ...{
- return ;
- }
- var request:URLRequest = new URLRequest(picurl);
- var loader:Loader = new Loader() ;
- loader.load(request);
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHander);
- }
- /** *//**
- * 对图片编码并提交给服务端保存。
- * @param bitmapdata 图片数据
- */
- public function submit(bitmapdata:BitmapData):void ...{
- //每次URL不同,AS3才会提交每一次,否则将不提交。
- var url :String = _url+"?"+Math.floor(Math.random()*1000) ;
- var request:URLRequest = new URLRequest(url);
- //编码成图片格式流
- var encoder:JPGEncoder = new JPGEncoder(80);
- var bytes:ByteArray = encoder.encode(bitmapdata);
- request.method = URLRequestMethod.POST;
- request.data = bytes ;
- //设置成文件流形式
- request.contentType = "application/octet-stream";
- var loader:URLLoader = new URLLoader();
- loader.load(request) ;
- loader.addEventListener(Event.COMPLETE, sendCompleteHandler) ;
- }
- /** *//**
- * 服务端保存完回调
- * @param e
- */
- private function sendCompleteHandler(e:Event):void ...{
- trace("save success........");
- }
- /** *//**
- * 保存裁剪图片
- * @param e
- */
- private function savePic(e:MouseEvent)...{
- //组装要裁剪区域
- var cutpic:Rectangle = new Rectangle(_rect.x,_rect.y,_rect.width,_rect.height);
- var bitmapdata:BitmapData = this.getCutData(_bitmapdata, cutpic);
- var bitmap:Bitmap = new Bitmap(bitmapdata) ;
- bitmap.x = 100 ;
- bitmap.y = 0 ;
- //只显示裁剪区域图片,去除其他空位置
- this.addChild(bitmap);
- this.submit(cutbitmapdata);
- }
- /** *//**
- * 获取所裁剪区域的数据。所有像素信息
- * @param source 源图数据
- * @param rect 所有裁剪的区域
- * @return BitmapData 裁剪出新图的数据
- */
- public function getCutData(source:BitmapData,rect:Rectangle):BitmapData ...{
- //存放裁剪出的新图片
- var cutbitmapdata:BitmapData = new BitmapData(Math.floor(_rect.width),Math.ceil(_rect.height)) ;
- //坐标转化,把坐标移到裁剪区域的位置,宽度和高度在cutbitmapdata里指定。
- var matrix:Matrix = new Matrix(1, 0, 0, 1, -Math.floor(_rect.x), -Math.floor(_rect.y));
- cutbitmapdata.draw(_bitmapdata, matrix);
- return cutbitmapdata ;
- }
- /** *//****
- * 装载图片完成之后,显示图片到场景
- * @param e
- */
- private function completeHander(e:Event):void ...{
- var loader:Loader = e.target.loader as Loader;
- this._picwidth = loader.width ;
- this._picheight = loader.height ;
- _bitmapdata= new BitmapData(loader.width, loader.height);
- _bitmapdata.draw(loader);
- var _bitmap:Bitmap = new Bitmap(_bitmapdata);
- _bitmap.x = this._picx;
- _bitmap.y = this._picy ;
- this.addChild(_bitmap);
- }
- /** *//****
- * 生成裁剪区域框,用来抓起图片
- * @param e
- */
- private function grabPic(e:MouseEvent):void
- ...{
- _rect= new Sprite () ;
- /** *//***设置裁剪区域边框样式*/
- _rect.graphics.lineStyle(3, 0xFF0000, 0.5, true, LineScaleMode.NONE, CapsStyle.ROUND);
- _rect.graphics.beginFill(0xCCFF00,0);
- _rect.graphics.drawRect(this._picx, this._picy, this._picwidth/4,this._picheight/4);
- _rect.graphics.endFill();
- _rect.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler) ;
- _rect.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandle) ;
- this.addChild(_rect) ;
- }
- /** *//**
- * 鼠标控制裁剪区域,可拖动,拉伸。
- * @param e
- */
- private function mouseDownHandler(e:MouseEvent):void ...{
- //裁剪区域移动范围,不能超过原图区域。
- var _rectangle:Rectangle = new Rectangle();
- _rectangle.width = _picwidth-_rect.width ;
- _rectangle.height = _picheight-_rect.height ;
- _rect.startDrag(false,_rectangle);
- }
- private function mouseUpHandle(e:MouseEvent):void ...{
- _rect.stopDrag();
- }
- }
- }
热门文章推荐
- [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示例
请稍候...