- 浏览: 13527 次
最新评论
导出Flex组件为jpg图片
- 博客分类:
- 技术杂绘
导出Flex组件为jpg图片
2011年03月10日
前几天看了lwz7512的 《基于servlet导出Flex/Flash界面为图形文件的简单方法》,今天有时间就实践了一下。
1.使用BitmapData将flex的某个UIComponent转换为ByteArray
2.使用JPGEncoder转换ByteArray。JPGEncoder是corelib(http://code.google.com/p/as3corelib/) 的组件。我直接导入corelib.swc却报错,幸好有源代码可以直接使用。
3.使用URLRequest发送ByteArray到服务端的java servlet
4.在servlet中使用ImageIO保存图片或者输出到response
下面是具体代码
actionscript 代码
[CDATA[ import mx.controls.Alert; import mx.core.UIComponent; import mx.collections.ArrayCollection; import com.adobe.images.JPGEncoder; [Bindable] public var expenses:ArrayCollection = new ArrayCollection( [ {Month:"Jan", Profit:2000, Expenses:1500}, {Month:"Feb", Profit:1000, Expenses:200}, {Month:"Mar", Profit:1500, Expenses:500} ] ); public function getJPGByteArray(target:UIComponent):ByteArray { var bitmapData : BitmapData = new BitmapData(target.width, target.height); bitmapData.draw(target); var jpg : JPGEncoder = new JPGEncoder(); var jpgByteArray : ByteArray = jpg.encode(bitmapData); return jpgByteArray; } public function sendImageByte(target:UIComponent):void { var request:URLRequest = new URLRequest("myImage"); request.contentType = 'applicatoin/octet-stream'; request.data = getJPGByteArray(target); request.method = URLRequestMethod.POST; navigateToURL(request, "_blank"); } ]]
这里使用了一个Bar Chart图表进行实验,URLRequest的myImage是我的java servlet
java 代码
import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import org.apache.commons.io.IOUtils; public class ImageServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { doService(arg0, arg1); } @Override protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { doService(arg0, arg1); } private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException { //saveImage(request, response); printImage(request, response); } private void saveImage(HttpServletRequest request, HttpServletResponse response) throws IOException { String fileName = "D://" + System.currentTimeMillis() + ".jpg"; BufferedImage bufferedImage = ImageIO.read(request.getInputStream()); if (bufferedImage != null) { ImageIO.write(bufferedImage, "jpeg", new File(fileName)); } } private void printImage(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("image/jpeg"); response.setHeader("Content-Length:", String.valueOf(request.getInputStream().available())); ServletOutputStream sos = response.getOutputStream(); IOUtils.copy(request.getInputStream(), sos); sos.flush(); sos.close(); } }
printImage将图形输出到response,将会在web浏览器中看到图片。或者你可以使用saveImage保存图片到服务器。
发表评论
-
windows下进程间通信的
2012-01-20 08:55 528windows下进程间通信的 2010年09月04日 w ... -
深入探究 Win32 PE 文件格式
2012-01-20 08:55 633深入探究 Win32 PE 文件格 ... -
如何编写PHP扩展
2012-01-20 08:55 654如何编写PHP扩展 2010年0 ... -
C++操作MySQL (The MySQL C API)
2012-01-20 08:55 873C++操作MySQL (The MySQL C API) 2 ... -
vc++连接MySQL数据库、mysql api函数
2012-01-20 08:55 963vc++连接MySQL数据库、mysql api函数 201 ... -
flex builder 5
2012-01-19 13:59 750flex builder 5 2011年08月03日 a ... -
想开始整整SmartRcP Flex + Java 开发GUI程序
2012-01-19 13:59 400想开始整整SmartRcP Flex + Java 开发GUI ... -
flex 3如何通过iframe嵌入html网页
2012-01-19 13:59 695flex 3如何通过iframe嵌入html网页 2011年 ... -
flex 客户端缓存 module swf(转)
2012-01-19 13:59 605flex 客户端缓存 module swf ... -
"043d0df76"指令引用的"0x00000013"内存,该内存不能为"read"
2012-01-17 03:49 557"043d0df76"指令引 ... -
引用的“0x00000000”内存,该内存不能为“read”或“written
2012-01-17 03:49 898引用的“0x00000000”内存,该内存不能为“read”或 ... -
0x000001b8指令引用的0x000001b8内存该内存不能为read
2012-01-17 03:49 6540x000001b8指令引用的0x0000 ... -
DX复习文档
2012-01-17 03:49 611DX复习文档 2011年12月19 ... -
电脑故障大全 6
2012-01-17 03:49 457电脑故障大全 6 2011年05 ... -
CKP.CMP工作原理===
2012-01-16 02:35 1339CKP.CMP工作原理=== 2010年02月27日 传 ... -
名+解
2012-01-16 02:35 470名+解 2012年01月04日 ... -
数控机床电气控制课程作业(三)
2012-01-16 02:34 1071数控机床电气控制课程 ... -
哈哈 电控
2012-01-16 02:34 556哈哈 电控 2010年06月21 ...
相关推荐
Flex中导出当前DataGrid中的数据。生成一个Excel文件。资源为一个简单的应用。
Flex中获取组件快照的ByteArray,然后调用JavaServlet将ByteArray导出成图片。
AdvancedDataGrid导出复杂表头excel
导入导出组件导入导出组件导入导出组件导入导出组件导入导出组件
作为ArcGIS工作者,日常编辑大量的MXD工程文件,尤其一些复杂的工程文件在导出地图时用时较长,如果MXD工程较多时需要一个一个来打开工作空间并导出。使用“批量导出工具”可以将文件夹内的所有MXD工程一次性自动...
arcgis数据驱动中利用arcpy批量导出JPG图片。分享数据为代码,代码中的路径需自己换。
NULL 博文链接:https://zhousheng193.iteye.com/blog/945068
flex pdf导出功能,具有分页效果。解决自带save()方法中的安全沙箱问题。ps :crossdomain.xml也解决不了,最后换的另一种的方式
[extjs]php导出excel组件及sql.zip 前台按钮+后台sql查询一应俱全 本文引用phpexcel组件,已附上.
本组件可以将表格中的内容导出为pdf、doc、xls、jpg。 在web开发中经常需要将jsp或html页面中表格数据导出为pdf、doc、xls等格式。然而在实现这一功能用到了一些开源的组件,每实现这一功能时都需要编写大量重复性...
flex air 导出excel表格(这个不支持中文)。。。。。。
flex导出csv文件。可以实现flex表格里面的内容导成csv文件
flex中dataGrid导出数据到excel中,不存在乱码问题
好东西与大家分享.....(使用时默默为原著祈祷)
flex air 导出 excel 支持中文
怎样将CAD图纸导出为jpg图片.docx
Flex利用JSP导出Excel Flex利用JSP导出Excel
这是一个利用poi封装的excel导入导出通用组件,详细用法请访问:http://fuyangrong.top/2018/01/29/excel导入导出通用组件/