flex有一个功能可以将组建转换成Bitmap这样只要拿到编辑过的图片字节码一切就容易了。这个功能大概有四步。
1.加载要编辑的图片
加载图片可以使用 BitImage类
因为只是演示一下就直接将将BitImage写死了。 代码:

view plaincopy to clipboardprint?
  1. <s:group id="myPanel" x="0" y="38">
  2. <s:bitmapimage source="@Embed('mv.jpg')" width="400" height="272" x="0" y="-1">
  3. <s:textarea x="269" y="21" width="112" height="88" contentbackgroundalpha="0.0" borderalpha="0.39">
  4. </s:textarea></s:bitmapimage></s:group>

2.鼠标的划线
鼠标划线主要就是监听鼠标的事件,思路就是 在鼠标按下时图片处于可以编辑状态,拖动鼠标时划线,松开鼠标时划线结束

view plaincopy to clipboardprint?
  1. private var mX:Number;
  2. private var mY:Number;
  3. private var IsDown:Boolean=false;
  4. private var path:String=new String();
  5. // 初始化函数
  6. private function init():void{
  7. myPanel.addEventListener(MouseEvent.MOUSE_DOWN,downHandler);
  8. myPanel.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler);
  9. myPanel.addEventListener(MouseEvent.MOUSE_UP,upHandler);
  10. myPanel.graphics.lineStyle(2,0x0000ff,1);
  11. myPanel.graphics.moveTo(10,10);
  12. myPanel.graphics.curveTo(175,125,200,200);
  13. }
  14. private function downHandler(e:MouseEvent):void{
  15. IsDown=true;
  16. mX=myPanel.mouseX;
  17. mY=myPanel.mouseY;
  18. }
  19. private function upHandler(e:MouseEvent):void{
  20. IsDown=false;
  21. trace(path);
  22. }
  23. private function moveHandler(e:MouseEvent):void{
  24. if(IsDown){
  25. var x:Number = myPanel.mouseX;
  26. var y:Number = myPanel.mouseY;
  27. myPanel.graphics.lineStyle(_lineSize,_lineColor,1);
  28. myPanel.graphics.moveTo(mX,mY);
  29. myPanel.graphics.lineTo(x,y);
  30. mX=x;
  31. mY=y;
  32. }
  33. }

3.得到编辑后字节码

view plaincopy to clipboardprint?
  1. var png:PNGEncoder=new PNGEncoder();
  2. var srcBit:BitmapData = new BitmapData(myPanel.width,myPanel.height);
  3. srcBit.draw(myPanel);
  4. var data:ByteArray=srcBit.getPixels(new Rectangle(0,0,myPanel.width,myPanel.height));
  5. var image:ByteArray=png.encodeByteArray(data,myPanel.width,myPanel.height);

上面代码得到png格式的图片编码
4.上传字节码到服务器

view plaincopy to clipboardprint?
  1. var hander:URLRequestHeader=new URLRequestHeader("Content-type","application/octet-stream");
  2. var request:URLRequest =new URLRequest("http://iyang/FlexUpload/DoServletUpload");
  3. request.requestHeaders.push(hander);
  4. request.method="POST";
  5. request.data=image;
  6. var load:URLLoader=new URLLoader(request);
  7. load.addEventListener(Event.COMPLETE,function(evt){
  8. Alert.show("保存成功");
  9. });

servlet使用request.getInputStream();得到字节流。

上面的功能经实现了所需要的功能
flex4 通过 FileReference可以实现将图片保存到本地,直接用得到的image的ByteArray就可以了
var file:FileReference=new FileReference();
file.save(image,”edit.png”);
这样就会弹出保存图片的对话框

Flex Java Servlet 实现简单图片编辑相关推荐

  1. jsp java 登陆_jsp+java servlet实现简单用户登录

    jsp+java servlet实现简单用户登录(使用数据库,包括注册页面) 功能介绍 本项目通过使用jsp和servlet实现简单的用户登录.主要逻辑为:如果用户不存在,则首先进行注册(注册信息同步 ...

  2. java flex 上传文件_使用Flex和java servlet上传文件

    资源都是来自网上.本实例将展示使用Flex和java servlet上传文件. 事前准备就是到http://commons.apache.org 下载common-fileupload-1.1.1.j ...

  3. java servlet spring_带着新人简单看看servlet到springmvc

    好久都没有写博客了,不是因为自己懒了,而是总感觉自己知道的只是太少了,每次想写博客的时候都不知道怎么下手,不过最近看到一篇博客说的是springmvc,给了我比较大的兴趣,感觉一下子对整个spring ...

  4. 使用Servlet和JSP开发Java应用程序 ---- 简单模拟天猫购物页面

    使用Servlet和JSP开发Java应用程序 ---- 简单模拟天猫购物页面 1. 加载 jar 包 2. 使用URL重写参数 3. 编写 ProductServlet 4. 在 productIn ...

  5. flex+java项目创建_创建Flex 4和Java Web应用程序

    当前的Web技术对它们的需求不断增长. 他们必须能够管理用户帐户,上载内容和流视频. 这种需求要求RIA开发人员寻求简化开发工作流程的技术,同时提供常见的功能. 开发人员面临的挑战是选择正确的技术来提 ...

  6. Java Servlet完全教程

    本文来自Java Servlet完全教程 Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广 ...

  7. Java Servlet 开发常用代码、模板、问题

    一 空Servlet类模板 import java.io.IOException; mport java.io.PrintWriter; import javax.servlet.ServletExc ...

  8. Java Servlet 技术简介

    开始之前 关于本教程 在您最喜欢的 Web 浏览器中,您所阅读的页面是如何出现的呢?当登录到您最喜欢的 Web 站点时,该 Web 站点如何知道登录的用户是您?而 Web 零售商又如何接受您的在线订购 ...

  9. 电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统

    用JSP/Servlet开发简单的用户注册系统 2.4界面编程实现 通过JavaBeans封装了大部分的逻辑或数据操作功能.这样,JSP页面中就可以减少很多Java代码,从而使得JSP的建立和修改变得 ...

最新文章

  1. 谷歌提出「卷积+注意力」新模型,超越ResNet最强变体
  2. LaTeX入门第二集!LaTeX的几个示例!
  3. OpenCV About 页面翻译
  4. Android构建流程——篇五
  5. 常见的蓝牙4.0模块
  6. ubuntu 16.0安装ros-kinetic
  7. 亿级规模的 Feed 流系统,如何轻松设计?
  8. BZOJ 1090: [SCOI2003]字符串折叠 区间DP
  9. idea设置自定义代码模板(webstorm也是如此)
  10. 北交所开市工作准备就绪 定于2021年11月15日开市
  11. 杨强教授领衔撰写,国内首本联邦学习实战的权威著作
  12. Noip2013错误避免
  13. Matlab图像特征提取的数学原理及实现
  14. piwik阅读(整体结构)
  15. Civil 3d 之枚举 SpiralType
  16. 求证:原函数与逆函数具有相同的单调性
  17. linux挂移动硬盘命令,linux挂载命令mount及U盘、移动硬盘的挂载
  18. 手机墙刷APP下载量骗推广费 10人因涉嫌合同诈骗被捕
  19. 计算属性普通函数写法 和 set get 写法
  20. 【耀扬表情包语音包】

热门文章

  1. 使用SQL Server进行时间点恢复
  2. sql编程接收一个集合_T-SQL中基于集合的程序编程方法简介
  3. TCP/IP学习笔记(3)----IP,ARP,RARP协议
  4. HDU 2844 Coins (多重背包)
  5. CentOS 配置自启动Redis
  6. 为U盘装备Ubuntu工作学习两不误
  7. HTTP Basic Authentication验证WCF Data Service
  8. 不贵难得之货,使民不盗
  9. 没有用户的可用性测试
  10. 多伦多大学密西莎加计算机科学,解析加国名校多伦多大学密西沙加校区