-
-
DIY部落社区最新活动:
[java]一个java技术性的问题
[java]java基础编程 悬赏100分
[操作系统]你觉的Windows哪个系统好?
2009.8.27-9.27日活动
[java]MP3可以做什么用
发起论坛活动请点击这里
--------------------------------------------------------------------------------
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();
}
}
}
服务端处理代码
<%
String filePath = request.getRealPath(System.currentTimeMillis()+".jpg");
System.out.print("filepath=="+filePath);
BufferedInputStream inputStream = new BufferedInputStream(request.getInputStream());
FileOutputStream outputStream = new FileOutputStream(new File(filePath));
byte [] bytes = new byte[1024];
int v;
while((v=inputStream.read(bytes))>0){
outputStream.write(bytes,0,v);
}
outputStream.close();
inputStream.close();
%>
文章出处:http://www.diybl.com/course/3_program/java/javajs/2008419/110560.html
分享到:
相关推荐
《Flex 3 RIA开发详解与精深实践》PDF及 配套代码 (1)《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本...
第1篇 ActionScript3.0语言基础 第1章 ActionScript3.0概述 第2章 搭建ActionScript3.0开发环境 第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性 第4章 ActionScript3.0面向对象编程 第...
actionscript3.0开发的进度显示条项目
《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、...
最专业的最专业的最专业的ActionScript 3.0 ActionScript 3.0 ActionScript 3.0 ActionScript 3.0 ActionScript 3.0
第6~9章介绍了ActionScript 3.0的核心——类及以类为基础的面向对象程序设计方法,包括类的基本概念、ActionScript 3.0中常用类的使用、显示编程和组件类;第10、11章分别介绍了几个ActionScript 3.0实际应用的范例...
本书详细地介绍了 actionscript 3.0的基础知识,包括 actionscript 3.0语言、actionscript 3.0对象的操作方法、显示列表的使用、事件模型、加载外部素材、可视化编程以及利用声音和视频增强应用程序等方面的知识,并...
ActionScript3.0 中文版 ActionScript3.0 api 中文版说明文档
ActionScript 3.0 提供了可靠的编程模型,具备面向对象编程的基本知识的开发人员对此模 型会感到似曾相识。ActionScript 3.0 中的一些主要功能包括: ■ 一个新增的 ActionScript 虚拟机,称为 AVM2,它使用全新的...
Foundation ActionScript 3.0 Animation Making Things Move ActionScript 3.0
ActionScript3.0完全自学手册电子教案
ActionScript 3.0 语言和组件参考概述Adobe Flex 2 语言参考ActionScript 3.0 语言和组件参考是适用于 Flash® Player 应用程序编程接口 (API) 的参考手册。 Adobe Flex 2 语言参考ActionScript 3.0 语言和组件...
用ActionScript 3.0动态绘制正弦曲线,附带源文件(包括一个.fla文件、一个.as文件、一个.swf文件)
一个关于用ActionScript3.0的图片3D旋转代码!
ActionScript3.0cookbook中文版 ActionScript3.0cookbook中文版 ActionScript3.0cookbook中文版
《ActionScript 3.0 语言和组件参考》概述《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、方法...
Flex ActionScript 3.0交互式开发详解源码。共分6个部分。包括源代码的使用教程。
ActionScript 3.0 as 组件 编程 中文 ActionScript 3.0 as 组件 编程 中文
actionscript 3.0 下雨actionscript 3.0 下雨actionscript 3.0 下雨actionscript 3.0 下雨actionscript 3.0 下雨