Flex中Image控件相关之(FileReference.save())保存图像到硬盘
相关类:文件的保存FileReference.save(),组件的截屏BitmapData 类
上代码
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
</fx:Declarations>
<fx:Script>
<![CDATA[
import comp.util.ImageProcessUtil;
import mx.controls.Alert;
import mx.core.UIComponent;
import mx.graphics.codec.JPEGEncoder;
import mx.utils.UIDUtil;
private var fileRefer:FileReference = new FileReference();
private var byteArr:ByteArray ;
private function saveComp(mycomp:UIComponent):void{
byteArr = ImageProcessUtil.BitmapDataToByteArray(mycomp);
var width:Number = mycomp.width;
var height:Number = mycomp.height;
byteArr =new JPEGEncoder().encodeByteArray(byteArr,width,height);
fileRefer.save(byteArr,UIDUtil.createUID()+".png");
fileRefer.addEventListener(Event.COMPLETE,completeHandler);
}
private function completeHandler(event:Event):void{
Alert.show("打印成功");
}
]]>
</fx:Script>
<mx:Image id="myImage" x="10" y="10" width="336" height="294" source="assets/images/map.jpg" maintainAspectRatio="false" scaleContent="true"
/>
<mx:AdvancedDataGrid id="myGrid" x="368" y="10" width="313" height="294" designViewDataType="tree">
<mx:columns>
<mx:AdvancedDataGridColumn dataField="col1" headerText="列 1"/>
<mx:AdvancedDataGridColumn dataField="col2" headerText="列 2"/>
<mx:AdvancedDataGridColumn dataField="col3" headerText="列 3"/>
</mx:columns>
</mx:AdvancedDataGrid>
<s:Button id="btn_grid" x="368" y="327" label="将AdvancedDataGrid截图保存" click="saveComp(myGrid)"/>
<s:Button id="btn_up" x="10" y="327" label="将上图截图保存" click="saveComp(myImage)"/>
</s:Application>
package comp.util
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;
import mx.core.UIComponent;
public class ImageProcessUtil
{
public function ImageProcessUtil()
{
}
//将可视的UIComponent组件转换为ByteArray
public static function BitmapDataToByteArray(target : UIComponent):ByteArray{
var width :int = target.width;
var height :int = target.height;
var bitmapData:BitmapData = UIComponentToBitmapData(target);
var byteArr:ByteArray = bitmapData.getPixels(new Rectangle(0,0,width,height));
byteArr.writeShort(width);
byteArr.writeShort(height);
return byteArr;
}
//将可视的UIComponent组件转换为图片
public static function UIComponentToBitmapData(target : UIComponent):BitmapData{
var width :int = target.width;
var height :int = target.height;
var bitmapData:BitmapData =new BitmapData(width,height);
bitmapData.draw(target);
return bitmapData;
}
//将ByteArray转为bitMap
public static function ByteArrayToBitmap(byteArr:ByteArray):Bitmap{
byteArr.position = byteArr.length -2;
var height:int = byteArr.readShort();
byteArr.position = byteArr.length -4;
var width:int = byteArr.readShort();
var bitmapData:BitmapData = new BitmapData(width,height);
byteArr.position = 0;
for(var i:int = 0;i<height;i++){
for(var j:int = 0;j<width;j++){
bitmapData.setPixel(j,i,byteArr.readUnsignedInt());
}
}
var bitMap:Bitmap = new Bitmap(bitmapData);
return bitMap;
}
}
}
分享到:
相关推荐
在这个方法中,开发者需要解析请求,获取上传的文件数据,并将其保存到服务器的某个位置。Java的Commons-FileUpload库是一个常用的工具,可以帮助处理multipart/form-data类型的请求,这是上传文件的标准格式。 在...
在文件上传的场景中,HTTPHandler接收由Flex客户端发送的文件数据,将其保存到服务器的指定位置。对于下载操作,HTTPHandler则负责读取服务器上的文件内容,并通过HTTP响应返回给Flex客户端。 具体步骤如下: 1. 在...
4. **保存为图片文件**:有了BitmapData,你可以将其转化为Bitmap对象,然后添加到DisplayList中显示,或者使用JPEGEncoder或PNGEncoder将其编码为图像文件。例如,编码为JPEG: ```actionscript var encoder:...
在IT行业中,Flex是一种基于ActionScript和Flash Player的开源框架,主要用于构建富互联网应用程序(RIA)。在Flex中处理文件大小的检测是开发过程中常见的需求,特别是在上传或下载文件时。以下将详细介绍如何在...
然后,将文件保存到服务器的指定位置,或者进行其他业务逻辑处理。 6. **安全与性能优化**:在实现文件上传功能时,需要考虑安全性问题,例如防止文件注入攻击。同时,为了提高性能,可以使用异步上传,分块上传等...
Flex 文件上传技术是一种在Web应用中实现用户向服务器端上传文件的方法,通常涉及到前端的Flex技术与后端的Java服务进行交互。Flex是一款强大的富互联网应用程序(RIA)开发框架,由Adobe公司提供,用于创建动态、...
如果需要保存为新文件,可以使用`flash.utils.ByteArray`将`BitmapData`导出为位图格式(如JPEG或PNG),然后使用`FileReference.save()`方法保存到本地。 7. **示例代码**: ```actionscript var bitmapData:...
C#代码将接收来自Flex控件的POST请求,保存文件到服务器,并可能返回确认信息。 5. **通信机制**:Flex和ASP.NET之间的通信通常通过AMF(Action Message Format)或XML/JSON进行。AMF是一种二进制格式,能更高效地...
Flex上传控件是一种基于Adobe Flex技术的用户界面组件,它允许用户在Web应用程序中上传文件。Flex是一个开源的开发框架,主要用于构建富互联网应用程序(RIA),它可以创建动态、交互式的Web应用,支持丰富的图形和...
在Flex中,我们可以利用其强大的图形处理能力来生成图片,并将其保存到本地或者服务器。本篇文章将详细探讨如何在Flex中实现这一功能。 首先,我们来看标题中的“flex生成图片并保存”。在Flex中,我们可以使用...
1. **引入库文件**:首先需要将`as3xlsUTF8.swc`库文件添加到你的Flex项目中。这通常通过在Flex Builder或Flash Builder中右键点击项目,选择“属性”>“ActionScript编译器”>“库路径”>“添加SWC”,然后找到并...
这个方法需要处理HTTP POST请求,接收到文件流后将其保存到服务器的指定位置,或者进行其他处理,如存储到数据库、文件系统或云存储服务。 以下是一个简单的C# Web API接口示例: ```csharp [Route("api/Upload")]...
在IT行业中,无刷上传控件是一种用户交互体验优化的技术,尤其在文件上传场景中,它能够提供实时的进度反馈,提升用户体验。本教程将详细讲解如何基于Flex技术实现无刷上传控件,并讨论其与JavaScript和Ajax的关系,...
当文件到达服务器时,通常会将其保存到服务器的某个目录。 2. **文件存储**:文件上传后,需要一个策略来存储这些文件。这可能包括设置一个特定的文件系统路径,或者使用数据库的BLOB字段。在Java中,可以使用...
在这个"flex多文件上传控件"中,我们可以看到它是Flex技术在文件上传场景中的应用,特别适合于需要批量或单个上传文件到服务器的Web应用。 该控件是通过Adobe Flash Builder 4进行开发的,Flash Builder是一个集成...
在Flex开发中,有时我们需要将用户界面中的数据显示到更易于管理和分析的格式中,例如Excel。本主题将深入探讨如何在Flex中实现组件DataGrid的数据导出功能,使其能够生成Excel文件供用户下载和处理。 DataGrid是...
将这些数据转换为`ByteArray`对象,然后设置到`Image`组件的`source`属性,即可实现在Flex应用中的预览。 3. **加载图片到内存**: - Flex中的`BitmapData`类是用于在内存中表示位图数据的类。要将`ByteArray`加载...
在本文中,我们将深入探讨如何使用AS3(ActionScript 3)实现在Web环境中录制视频并将其保存为FLV(Flash Video)格式到用户的本地计算机。AS3是Adobe Flash Player和Adobe AIR应用程序的核心编程语言,它提供了丰富...
Flex文件上传下载是一种在Web应用中实现文件交互的技术,它主要使用Adobe Flex框架来构建富互联网应用程序(RIA)。Flex提供了一种强大的方式来创建交互式的、图形化的用户界面,其中包括处理文件上传和下载功能。在...
在接收到文件上传请求时,服务器端需要解析Request对象,从中获取HttpPostedFileBase实例,然后调用SaveAs()方法将文件保存到服务器的指定位置。 在Flex和.Net之间建立通信时,通常采用AMF(Action Message Format...