import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.FileReference; import flash.display.Loader; import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.events.MouseEvent; import flash.ui.ContextMenu; import flash.ui.ContextMenuBuiltInItems; import flash.ui.ContextMenuItem; import com.klstudio.images.JPGEncoder; import org.gif.encoder.GIFEncoder; import flash.utils.ByteArray; var gifencoder: GIFEncoder = new GIFEncoder(); gifencoder.start(); //gifencoder.setDelay(200); gifencoder.setFrameRate(1); gifencoder.setRepeat(0); var loader: Loader = new Loader(); var request: URLRequest = new URLRequest("Image.jpg"); var bitmapdata: BitmapData; var bitmap: Bitmap; var sp: Sprite = new Sprite(); var sp_cut: Sprite = new Sprite(); var menu: ContextMenu = new ContextMenu(); var UPLOAD_PAGE: String = "http://localhost:5447/crd/test5.aspx"; loader.load(request); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); addChild(loader); createDrag(100, 50); addChild(sp); addChild(sp_cut); hidBuildItem(); function completeHandler(event: Event): void { while (sp_cut.numChildren > 0) { sp_cut.removeChildAt(0); } bitmapdata = Bitmap(loader.contentLoaderInfo.content).bitmapData; var rectangle: Rectangle = new Rectangle(sp.x, sp.y, 100, 100); var box: BitmapData = new BitmapData(100, 100, false); box.copyPixels(bitmapdata, rectangle, new Point()); bitmap = new Bitmap(box); sp_cut.addChild(bitmap); sp_cut.x = 0; sp_cut.y = bitmapdata.height + 10; var encoder: JPGEncoder = new JPGEncoder(80); var bytes: ByteArray = encoder.encode(box); var request: URLRequest = new URLRequest(UPLOAD_PAGE); //data值就为图片编码数据ByteArray; request.data = bytes; request.method = URLRequestMethod.POST; //这个是关键,内容类型必须是下面文件流形式; request.contentType = "application/octet-stream"; var loaders: URLLoader = new URLLoader(); loaders.load(request); loaders.addEventListener(Event.COMPLETE, completeHandlers); loaders.addEventListener(IOErrorEvent.IO_ERROR, errorHandlers); } function createDrag(x: int, y: int): void { sp.graphics.clear(); sp.graphics.lineStyle(1, 0xffffff); sp.graphics.beginFill(0xaabbcc, 0.4); sp.graphics.drawRect(0, 0, 100, 100); sp.graphics.endFill(); addEventListener(MouseEvent.MOUSE_DOWN, mousedownHandler); addEventListener(MouseEvent.MOUSE_UP, mouseupHanlder); sp.x = x; sp.y = y; sp.useHandCursor = true; sp.buttonMode = true; } function mousedownHandler(event: MouseEvent): void { sp.addEventListener(MouseEvent.MOUSE_MOVE, mousemoveHandler); } function mousemoveHandler(event: MouseEvent): void { sp.x = root.mouseX - (sp.width / 2); sp.y = root.mouseY - (sp.height / 2); event.updateAfterEvent(); } function mouseupHanlder(event: MouseEvent): void { sp.removeEventListener(MouseEvent.MOUSE_MOVE, mousemoveHandler); cutPic(); } function cutPic() { bitmapdata = Bitmap(loader.contentLoaderInfo.content).bitmapData; var rectangle: Rectangle = new Rectangle(sp.x, sp.y, 100, 100); var box: BitmapData = new BitmapData(100, 100, false); box.copyPixels(bitmapdata, rectangle, new Point()); bitmap = new Bitmap(box); sp_cut.addChild(bitmap); //-- var encoder: JPGEncoder = new JPGEncoder(80); var bytes: ByteArray = encoder.encode(box); var request: URLRequest = new URLRequest(UPLOAD_PAGE); gifencoder.addFrame(box); //data值就为图片编码数据ByteArray; request.data = bytes; request.method = URLRequestMethod.POST; //这个是关键,内容类型必须是下面文件流形式; request.contentType = "application/octet-stream"; var loaders: URLLoader = new URLLoader(); loaders.load(request); loaders.addEventListener(Event.COMPLETE, completeHandlers); loaders.addEventListener(IOErrorEvent.IO_ERROR, errorHandlers); } btn_cut.addEventListener(MouseEvent.CLICK, btn_cutHandler); btn_gif.addEventListener(MouseEvent.CLICK, btn_gifHandler); function btn_gifHandler(event: MouseEvent): void { var request: URLRequest = new URLRequest(UPLOAD_PAGE + "?g=gif"); gifencoder.finish(); var bytegif: ByteArray = gifencoder.stream; bytegif.position = 0; trace(bytegif.length); if (bytegif.length > 100) { request.data = bytegif; request.method = URLRequestMethod.POST; request.contentType = "application/octet-stream"; var loaders: URLLoader = new URLLoader(); loaders.load(request); loaders.addEventListener(Event.COMPLETE, completeHandlers); loaders.addEventListener(IOErrorEvent.IO_ERROR, errorHandlers); } } function btn_cutHandler(event: MouseEvent): void { cutPic(); } function hidBuildItem(): void { menu.hideBuiltInItems(); var menuitem: ContextMenuItem = new ContextMenuItem("Change Size"); menu.customItems.push(menuitem); menuitem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuitemHandler); sp.contextMenu = menu; } function menuitemHandler(evetn: ContextMenuEvent): void { trace("无法改变大小"); } function completeHandlers(event: Event): void { trace("图片上传成功"); } function errorHandlers(event: IOErrorEvent): void { trace("图片上传失败"); }