-
-
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) 的参考手册。 此版本...
《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、...
第1篇 ActionScript3.0语言基础 第1章 ActionScript3.0概述 第2章 搭建ActionScript3.0开发环境 第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性 第4章 ActionScript3.0面向对象编程 第...
这次我们关注的是一个利用ActionScript 3.0进行图片展示的项目,标题为"actionscript3.0图片展示"。描述中提到,这是一个基于XML的图片加载方案,包含缓动效果,适合初学者作为入门教程来学习。 首先,让我们深入...
《Flash ActionScript3.0教程示例(从入门到精通)》是一本全面解析ActionScript3.0编程语言在Flash平台上的应用的教程。ActionScript3.0是Adobe Flash Professional中的核心编程语言,用于创建交互式动画、游戏、富...
《ActionScript3.0 Game Programming》是一本专为游戏开发者设计的权威教程,中文版的出版使得更多中国读者能够深入理解和掌握ActionScript3.0在游戏开发中的应用。这本书不仅覆盖了ActionScript的基础语法和面向...
7. **Flash ActionScript 3.0动画教程_Foundation_Actionscript3.0_Animation_CN.pdf**:作为基础教程,这本书可能讲解了如何使用ActionScript 3.0进行基本动画制作,包括帧动画、补间动画、形状补间以及如何与图形...
ActionScript 3.0 是Adobe开发的一种编程语言,主要用于创建交互式内容,特别是在Flash和Flex平台上。这个“ActionScript 3.0 宝典”很可能是一本全面介绍该语言的教程,适合初学者和有一定经验的开发者。PDF版本...
ActionScript 3.0 是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA,Rich Internet Applications),尤其是在Flash平台上。它极大地提升了Flash Player和Adobe AIR应用的性能和功能,使得...
ActionScript 3.0是Adobe Flash Professional、Flash Player以及Adobe AIR中的主要编程语言,用于创建交互式内容、游戏和富互联网应用程序(RIA)。本教程针对ActionScript 3.0的动画制作进行了深入讲解,旨在帮助...
ActionScript3.0是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA),尤其是在Flash平台上。它是Flash Professional、Flash Builder等工具的核心组成部分,让开发者能够为网页、桌面和移动...
第6~9章介绍了ActionScript 3.0的核心——类及以类为基础的面向对象程序设计方法,包括类的基本概念、ActionScript 3.0中常用类的使用、显示编程和组件类;第10、11章分别介绍了几个ActionScript 3.0实际应用的范例...
在探讨“ActionScript3.0 图片切场效果”这一主题时,我们深入解析了如何在Flash中利用AS3.0实现多种动态图像过渡效果,这些技术不仅为动画设计者提供了丰富的视觉表现手段,同时也展示了AS3.0作为一款强大编程语言...
在本主题"Flex ActionScript 3.0交互式开发详解源码(四)"中,我们将深入探讨这个强大的开发工具和技术。 一、ActionScript 3.0基础 ActionScript 3.0相较于之前的版本,有了显著的性能提升和更严谨的类型系统。它...
《Foundation ActionScript 3.0 Animation》是一本...《foundation Actionscript3.0 Animation.pdf》这个文件很可能是这本书的电子版,包含完整的章节内容和可能的练习案例,对于自学或者参考来说是非常宝贵的资源。
【ActionScript 3.0详解】 ActionScript 3.0是一种强大的编程语言,主要用于实现Flex应用的业务逻辑和控制,与MXML一起构成了Flex应用程序开发的基础。ActionScript 3.0在Flash Player运行环境中执行,借助...
ActionScript 3.0是Adobe Flash Professional和Flex SDK中用于创建富互联网应用程序(RIA)的主要编程语言。在“ActionScript 3.0动态绘制正弦曲线”这个项目中,开发者利用了AS3的强大功能来创建可视化图形,特别是...
Flex ActionScript 3.0是Adobe Flex框架中的编程语言,用于构建富互联网应用程序(RIA)。这个压缩包包含的资源是关于如何使用ActionScript 3.0进行交互式开发的详细教程,特别适合初学者和进阶开发者提升技能。源码...