Flex图片另存为的解决方法-类似可以解决另存为excel

xiaoxiao2024-04-15  24

    我们知道Flex对于本地的限制比AIR要大,当我们想保存一个由Flex生成的文件必须借由服务器来完成,现在有一个需求就是,用户想保存Flex生成的图片在本地,我们要完成这个过程,必须先将Flex生成的图片转换为通用的数据格式,即ByteArray,然后由后台程序帮助写文件,形式上类似先上传,再下载,只不过中间不用保存实际的物理文件。    好了废话这么多把代码贴上来吧    Flex端

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script>   <![CDATA[   import mx.graphics.codec.JPEGEncoder;   import mx.graphics.ImageSnapshot;   private function saveAs(){       var en:JPEGEncoder = new JPEGEncoder(100); //压缩图片,100是指质量       var ba:ByteArray=en.encode(ImageSnapshot.captureBitmapData(img));//将控件转为BitmapData后再转  为ByteArray       var request:URLRequest = new URLRequest("/TestForLCDS/servlet/UploadServlet");       request.method="POST";       request.data=ba;       request.contentType = "application/octet-stream"; //这个很重要,设置成流数据       navigateToURL(request,"_blank"); //因为要浏览器触发下载事件,所以就不用异步方式打开连接了   } ]]> </mx:Script> <mx:Button x="228" y="10" label="另存为本地图片" click="saveAs()"/>     <mx:Image id="img" x="10" y="10" source="img.jpg" width="200"  height="200" scaleContent="false"/> </mx:Application>

后台Java servlet

public void doPost(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {     response.setContentType("application/x-download"); //内容是下载     response.setHeader("Content-Disposition","attachment;filename=" + "test.jpg");//文件名,可以进一步 处理     //读数据     BufferedInputStream inputStream = new BufferedInputStream(request.getInputStream());     OutputStream outputStream = response.getOutputStream();     byte [] bytes = new byte[1024];      int v;     //写数据     while((v=inputStream.read(bytes))>0){         outputStream.write(bytes,0,v);     }         outputStream.flush();         outputStream.close();         inputStream.close();   } 相关资源:flex 实现图片另存为
转载请注明原文地址: https://www.6miu.com/read-5015007.html

最新回复(0)