`
lixinye0123
  • 浏览: 336111 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

用Flex程序开发截屏功能

    博客分类:
  • Flex
阅读更多

在最近的Flex项目中需要做个屏幕截图功能,然后保存为图片文件,以前好像在哪里看到这样的例子,找了半天没找着,其实实现起来也挺简单的。

具体步骤如下:

  • 创建一个BitmapData对象
  • 拷贝目标组件的象素数据到BitmapData对象上
  • 转换BitmapData对象为PNG编码的ByteArray (需要用到PNGEnc库)
  • 转换ByteArray为Base64Encoded字符串,这样便于发送数据给后台处理
  • 在后台程序中(如PHP等),对数据解码然后写入文件

PNG Encoder 库是由Tinic Uro编写的。

这里是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.utils.Base64Encoder;
import mx.rpc.events.ResultEvent;
import mx.utils.ObjectUtil;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.core.UIComponent;

public function onResult(event:ResultEvent) :void
{
Alert.show(ObjectUtil.toString(event.result));
}

public function onFault(event:FaultEvent) :void
{
Alert.show("Got error: "+event.message);
}

public function takeSnapshot(target:UIComponent) :void
{
var bd:BitmapData = new BitmapData(target.width,target.height);
bd.draw(target);
var ba:ByteArray = PNGEnc.encode(bd);
var be:Base64Encoder = new Base64Encoder();
be.encodeBytes(ba);
var encodedData:String = be.flush();
ro.saveImage(encodedData);
}
]]>

</mx:Script>

<mx:Button click="takeSnapshot(targetPanel)" label="Save Image" x="10" y="100"/>

<mx:Panel id="targetPanel">
<mx:Canvas backgroundColor="#EEEEEE">
<mx:Label text="Hello World" />
</mx:Canvas>
</mx:Panel>

<mx:RemoteObject id="ro" destination="serviceEndpoint" result="onResult(event)" fault="onFault(event)"/>
</mx:Application>

后台的PHP代码:

public function saveImage($encodedPNGData)
{
if ($encodedPNGData != "")
{
$binaryData = base64_decode($encodedPNGData);
$file = "assets/images/something.png";
file_put_contents($file, $binaryData);
return $file;
}
return null;
}

 
分享到:
评论

相关推荐

    Flex涂鸦功能Demo程序下载

    Flex是一种开源的、基于ActionScript 3.0的开发框架,主要用于构建富互联网应用程序(RIA)。它提供了丰富的用户界面组件和强大的数据绑定机制,使得开发者可以轻松创建动态、交互性强的Web应用程序。 在Flex中实现...

    flex 截图

    “工具”可能指的是用于截图的Flex组件或者辅助开发的工具,例如可能是使用了一些第三方库或Flex SDK中的特定工具类。 【知识点详解】: 1. **Flex架构**:了解Flex的基础架构,包括MXML和ActionScript 3.0,这是...

    微信小程序-FlexLayout布局小程序项目源码-原生开发框架-含效果截图示例.zip

    首先,微信小程序无需下载安装,用户通过微信即可直接使用,极大地降低了使用门槛。其次,小程序拥有与原生应用相近的用户体验,同时加载速度快,响应迅速,保证了良好的使用感受。此外,微信小程序还提供了丰富的...

    flex-图片保存-本地磁盘-单个ui截屏-整个框架截屏

    在Flex开发中,图片保存至本地磁盘的功能是常见的需求,尤其在用户界面(UI)交互和调试过程中。本文将详细讲解如何实现Flex中的图片保存,包括单个UI组件的截图以及整个应用框架的截图。 首先,理解Flex的基础。...

    微信小程序-微信小程序的Flex布局demo小程序项目源码-原生开发框架-含效果截图示例.zip

    现在,我们为您提供了微信小程序的项目源码,包括原生开发框架和效果截图示例。这份资源不仅能让您深入了解微信小程序的开发流程,还能直接复用其中的代码和设计,加速您的项目开发进程。无论是个人学习还是企业项目...

    翻书和截屏Flex

    综上所述,"翻书和截屏Flex"涉及到的技术点包括Flex框架的使用、自定义组件开发、动画与图形渲染、屏幕截图的实现以及与本地文件系统的交互。这些知识对于构建具有丰富用户体验的RIA应用至关重要。

    自创Flex入门教程

    - **FlexBuilder**:Adobe公司的Flex集成开发环境,提供强大的Flex应用程序开发支持。 - **XMLBean**:Apache的一个项目,提供了一种面向对象的方式来处理XML数据。 - **RegexBuddy**:一款强大的正则表达式编辑工具...

    Flex Builder

    Flex Builder是一款专为开发Adobe Flex应用程序而设计的集成开发环境(IDE)。它是基于Eclipse平台构建的,提供了丰富的工具集,支持ActionScript编程、MXML布局以及与Flash Player和Adobe AIR的交互。在Flex开发...

    微信小程序项目实例-wechat-app-flexlayout(源码+截图)

    微信小程序是一种轻量级的应用...这对于开发者来说是一个宝贵的实践机会,有助于提升在微信小程序开发中的Flex布局运用技巧。无论是新手还是有经验的开发者,都可以从中受益,增强自己在移动应用开发领域的专业能力。

    flex4 视频教程截取的一些图片

    Flex 4 是 Adobe 开发的一款用于构建富互联网应用程序(Rich Internet Applications, RIA)的框架,它是 Flex 3 的升级版本,提供了许多增强特性和改进。这个“flex4 视频教程截取的一些图片”很可能是为了辅助学习...

    android 开发书籍 高清 PDF Developing Android Applications with Flex 4.5

    ### 关于《使用Flex 4.5开发Android应用程序》的关键知识点 #### 一、书籍概述与目标读者 《使用Flex 4.5开发Android应用程序》是一本专为希望利用Adobe Flex框架开发Android应用的开发者而设计的技术指南。本书由...

    天天考试2.2.0小程序 goouc_practice.rar微信小程序模板源码

    总的来说,这个模板源码提供了一个实践性的起点,让开发者能够在理解微信小程序开发流程的同时,快速搭建起一个功能完备的应用。无论是初学者还是经验丰富的开发者,都可以从中获益,提升自己的小程序开发技能。因此...

    FlexJsNet.zip_flex

    FlexJsNet.zip_flex是一个与Flex技术和C#集成相关的压缩包,主要目的是将Flex生成的SWF(ShockWave Flash)文件嵌入到C#应用程序的用户界面中,并且实现对Flex动态界面的截图和播放功能。这个压缩包可能包含一个名为...

    Flex写的图片截图工具(源码)

    本资源提供的是一款使用Flex编写的图片截图工具,具备在线截图并上传功能,对于个人建站来说非常实用。 这款截图工具的核心功能包括: 1. **图形用户界面(GUI)**:Flex提供了MXML和ActionScript语言来构建用户...

    上一篇的flex的远程对象调用,flex和spring集成分页的jar和截图

    标题中的“flex的远程对象调用”指的是在Adobe Flex应用程序中使用Remote Object(RO)服务进行远程通信的技术。Flex是一个开源的、基于ActionScript的框架,用于构建富互联网应用程序(RIA)。通过RO服务,Flex应用...

    flex java整合案例(使用BlazeDS和LCDS整合)

    - "Java平台下基于Flex3开发的实例.doc":可能详细讲解了如何在Java平台上使用Flex3开发应用程序,可能包括特定的API使用和最佳实践。 - "Flex%整合Java实例.pdf":可能提供了一个具体的整合案例,详细展示了Flex...

    平安保险小程序源码截图.zip

    通常,源码是程序开发的基础,它由程序员编写,用特定的编程语言描述了软件的功能和操作逻辑。而“截图”意味着我们可能无法直接看到完整的源代码,但可以通过这些图片来理解程序的结构和部分功能实现。 描述中的...

    [使用AdobeAIR开发Android应用程序].PDF 及源代码

    4. **PDF文档的价值**:“[使用AdobeAIR开发Android应用程序].PDF”可能包含详细的教程和指南,涵盖了从环境设置到实际编程的全过程,可能包括Air SDK安装、Flex Builder或IntelliJ IDEA的使用、打包和发布应用等...

    [转] [Flash/Flex] Flex框架下的RIA开发现场--第3回 Adobe AIR 2的15项新功能

    8. **屏幕截图**:允许应用程序捕获和处理屏幕截图,为创建屏幕录制和桌面监控功能提供可能。 9. **网络监控**:提供网络连接状态的监控,帮助开发者更好地处理网络中断或恢复的情况。 10. **桌面集成**:新增了与...

    找电影视频小程序微信小程序源码+截图

    1. **微信小程序开发**:微信小程序是一种轻量级的应用形态,它不需要下载安装即可使用,为用户提供了便捷的体验。开发微信小程序需要用到微信官方提供的开发工具,开发者需要掌握WXML(微信小程序的结构标签语言)...

Global site tag (gtag.js) - Google Analytics