AS3 在图片处理方面给我们带来了令人惊奇的功能。其中一个特性就是允许将一个显示对象编码为JPEG格式,当然要感谢JPEG Encoder包含在了AS3 Core Library里面,这让我们可以做一个实际上非常容易的实例。在这篇文章里,我将向你展示如何创建一个Flash文件,并且把一个电影剪辑编码成 JPEG格式,然后允许用户下载这个图片到他们的桌面上。

或许下面这个例子可以给你一些启发,告诉你如何应用这项技术,尝试在上面绘画,然后点击下面的按钮吧。

点击这里查看示例

准备工作

在我们开始之前,请确保你拥有了ActionScript. 3 Core Library。这个类库包含了一些很有用的类,用于简化我们的开发工作,比如MD5加密,日期格式化,图片编码等等。一旦你拥有这个类库,只需将它拖放到你准备好的类文件夹中。现在我们可以引入JPGEncoder。

Actionscript. 
import com.adobe.images.JPGEncoder;

编码电影剪辑

在这个示例中,我们假设要被编码的电影剪辑被命名为sketch_mc。在我们使用JPGEncoder之前,这个电影剪辑需要转换为Bitmap 格式。要做到这一点,我们需要使用BitmapData类。这个类的构造器需要接受2个参数:宽度和高度。如果我们希望最后的JPEG图像的大小与 sketch_mc的大小一致,我们可以使用sketch_mc的宽度和高度属性。然后我们把sketch_mc作为一个参数,使用draw函数绘制 Bitmap。

Actionscript.

1 import com.adobe.images.JPGEncoder;
2
3 var jpgSource:BitmapData = new BitmapData (sketch_mc.width, sketch_mc.height);
4 jpgSource.draw(sketch_mc); 

现 在sketch_mc已经是Bitmap的数据来源,我们可以使用JPGEncoder了。在创建这个类的实例的时候,你可以通过传递一个从1到 100的数字来设置压缩比。然后为了创建JPEG图像,我们需要调用encode函数,并且把我们的Bitmap数据作为传递参数。encode函数会以 ByteArray的形式返回JPEG图像,在AS3中编写这些代码是非常容易的。

Actionscript.

1 import com.adobe.images.JPGEncoder;
2
3 var jpgSource:BitmapData = new BitmapData (sketch_mc.width, sketch_mc.height);
4 jpgSource.draw(sketch_mc);
5
6 var jpgEncoder:JPGEncoder = new JPGEncoder(85);
7 var jpgStream:ByteArray = jpgEncoder.encode(jpgSource); 

从FlashPlayer中保存图像到桌面

AS3 已经完成了将电影剪辑编码为JPEG的工作,但是我们还需要一点小小的改动,让它可以真实的下载。要实现这一步,我们需要使用 URLRequest类发布ByteArray数据到一个动态网页中。既然我们要发送二进制数据,就需要设置内容类型为 “application/octet-stream”。当然我们下载文件的时候需要一个文件名称,所以我们为动态网页传递了一个字符串形式的参数。

Actionscript.

import com.adobe.images.JPGEncoder;var jpgSource:BitmapData = new BitmapData (sketch_mc.width, sketch_mc.height);
jpgSource.draw(sketch_mc);var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);var header:URLRequestHeader = new URLRequestHeader(”Content-type”, “application/octet-stream”);
var jpgURLRequest:URLRequest = new URLRequest(”jpg_encoder_download.php?name=sketch.jpg”);
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
navigateToURL(jpgURLRequest, “_blank”); 

下面是用于保存JPEG图片的PHP代码。这里我使用了PHP技术,实际上你可以使用任何其它的动态语言。

PHP:

if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
// get bytearray
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"];// add headers for download dialog-box
header(’Content-Type: image/jpeg’);
header(”Content-Disposition: attachment; filename=”.$_GET[’name’]);
echo $jpg;
} 

文章来自: 闪客居(www.flashas.net) 详文参考:http://www.flashas.net/html/flashasyy/20080619/3316.html

转载于:https://www.cnblogs.com/ztdy/p/3616987.html

AS3 JPEG Encoder应用:从Flash中保存图片相关推荐

  1. AS3文档类调用FLASH元件库中元件

    其实这个方法和调用FLASH中自带组件的方法是一样的. 图中我建了一个元件1,一个黑色的正方形,导出为 ak 在FlashDevelop里面写的代码如下: package {  import flas ...

  2. flash中Stage,stage,root和this的区别用法

    转载自:http://aresleecool.blog.163.com/blog/static/120715798201011895334718/ http://cctv566888.blog.163 ...

  3. 优化Flash中的3D模型加载

    2019独角兽企业重金招聘Python工程师标准>>> 来自:Kid's Zone 最近在做一个公司的Flash3D页游项目,遇到了这个问题,前前后后断断续续也优化了一段时间,觉得还 ...

  4. 【转】Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系

    标签: Actionscript AS3 MXML Flex Flex Builder Flash Builder Flash AIR Flash Player   ActionScript Acti ...

  5. flash 中无法导出swf文件的解决方法

    近一个星期,我的flash cs6一直导不出swf文件,郁闷了好长时间,今天终于在网上找到了解决办法:总结了一下,如下:      一.是把文字打散,变成形状.      二.是把汉字的字体设成fla ...

  6. matlab中单独存图_[转载]matlab中保存图片的方法

    matlab中保存图片的方法 一.一种是出来图形窗口后手动保存(这儿又可以分两种): 1 直接从菜单保存,有fig,eps,jpeg,gif,png,bmp等格式. 2 edit------〉copy ...

  7. Android中保存图片到本地功能实现

    文章转载自http://blog.csdn.net/ccpat/article/details/45314175  感谢原作者~ 本文描述将一个Bitmap对象保存为一个图片文件的主要步骤.保存的图片 ...

  8. flash中制的SWC组件怎样导入到flex中使用

    flash中制的SWC组件怎样导入到flex中使用 2010-04-30 11:18 在使用FLASH导出SWC组件文件后,放入项目的LIB文件夹,然后要用实例化一个对象才能进行时操作使用, 但要记得 ...

  9. 使用 NOR Flash 中的supervivi 下载裸机程序到NandFlash

    不容易啊,终于把 将MDK程序下载到我的mini2440开发板上的nand flash的方法找到了,我是利用韦东山老师的那套方法即利用DNW和supervivi下载到nand flash的.当然,只是 ...

  10. STM32如何从串口接收数据,取出数据中的密码段再保存到flash中。

    STM32如何从串口接收数据,取出数据中的密码段再保存到flash中 STM32如何从串口接收数据,取出数据中的密码段再保存到flash中u8 Usart2_buf[256]; unsigned in ...

最新文章

  1. Java Bad version
  2. python 第一安装 https网络请求问题
  3. $.post请求的参数在后台代码中得到为null_996难得休息,小伙打开steam网页看了一款游戏,输入密码后却习惯性按了F12研究起了JS代码...
  4. Spring Boot 项目实现热部署
  5. 使用uni-app开发微信小程序之登录模块
  6. 三、链表(Linked List)(原理)
  7. plsql删除大量数据_一次oracle大量数据删除经历
  8. H - Cow Contest(floyd的传递闭包性)
  9. Linux 系统编程技巧与概念 第14章 字节次序
  10. [渝粤教育] 浙江大学 半导体材料 参考 资料
  11. C语言简单通讯录模板
  12. python回文字符串编程_P086 回文字符串
  13. 如何关掉visual studio 2012 实时调试器
  14. SSL P2133 腾讯大战360
  15. WebMagic爬取码市、猪八戒、一品威客外包数据
  16. CSDN文章自动展开全文无需登录插件(仅限Chrome)!
  17. qt tableb view 打印预览和打印的问题 个人解决办法
  18. 电脑桌面上怎么找计算机,电脑自带计算器快捷键 如何快速打开电脑上的计算器...
  19. 常用的Linux发行版
  20. php解析视频_【教程】php实现百度网盘视频解析

热门文章

  1. NeurIPS 2019:进入NLP的黄金时代
  2. 深度学习TF—1.TensorFlow2基本操作
  3. 机器学习算法基础3-sklearn数据集与估计器
  4. transformer:self-attention 自注意力机制详解
  5. 一本用户体验时代的产品生存指南
  6. 容器技术的发展与基本原理
  7. 唯大英雄能真本色——leo推荐程序员小说《敏捷无敌》
  8. 深度学习:径向基网络(RBF)
  9. qq浏览文件服务器,腾讯浏览服务
  10. 力扣-674 最长连续递增序列