在flash player 11.3和air3.3之前,我们可以借助第三方类(JPEGEncoder)这些,很容易处理。现在,有了encode和JPEGEncoderOptions这些,处理位图数据就更简单快捷了。

  flash.display.BitmapData.encode() 方法允许您将位图数据本机压缩为以下图像压缩格式之一:

  • PNG - 使用 PNG 压缩,可以选择使用快速压缩,它强调的是压缩速度而不是文件大小。若要使用 PNG 压缩,请将新的 flash.display.PNGEncoderOptions 对象作为 BitmapData.encode() 方法的第二个参数传递。

  • JPEG - 使用 JPEG 压缩,可以选择指定图像品质。若要使用 JPEG 压缩,请将新的 flash.display.JPEGEncoderOptions 对象作为 BitmapData.encode() 方法的第二个参数传递。

  • JPEGXR - 使用 JPEG 扩展范围 (XR) 压缩,可以选择指定颜色通道、损耗和熵 (entropy) 编码设置。若要使用 JPEGXR 压缩,请将新的 flash.display.JPEGXREncoderOptions 对象作为BitmapData.encode() 方法的第二个参数传递。

您可以将图像处理的此功能用作服务器上传或下载工作流程的一部分。

下面的示例代码片段使用 JPEGEncoderOptions 压缩 BitmapData 对象:

var bitmapData:BitmapData = new BitmapData(640,480,false,0x00FF00);
var byteArray:ByteArray = new ByteArray();
bitmapData.encode(new Rectangle(0,0,640,480), new flash.display.JPEGEncoderOptions(), byteArray);

对于JPEGEncoderOptions的参数,其值介于1和100之间。值为1的时候,品质最低,100品质最高。默认值是80,这个时候,处理出来的位图质量已经很好了。

import flash.net.FileReference;
import flash.utils.ByteArray;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.JPEGEncoderOptions;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.system.Security;
import flash.geom.Rectangle; var _fileRefer:FileReference = new FileReference();
var _byteArr:ByteArray = new ByteArray();
function save():void
{
var rect:Rectangle = new Rectangle(0,0,724,640);
var bmpd:BitmapData = new BitmapData(rect.width,rect.height,true,0); bmpd.draw(_图片容器);
var jpegEncoder:JPEGEncoderOptions = new JPEGEncoderOptions(80);
bmpd.encode(bmpd.rect,jpegEncoder,_byteArr); if (_byteArr != null)
{
var date:Date = new Date();
var str:String = date.fullYear.toString() + (date.month + 1).toString() + date.date.toString() + date.hours + date.minutes + date.seconds + ".jpg";
if (Security.sandboxType.toString() == "application")
{
var file:File = File.userDirectory.resolvePath(str);
var filestream:FileStream = new FileStream();
filestream.openAsync(file, FileMode.WRITE);
filestream.writeBytes(_bytearr);
AlertPanel.getInstance().show("图片保存成功,保存地址:\n"+file.nativePath,true,stage);
trace(file.nativePath);
}
else
{
_fileRefer.save(_byteArr,str);
}
} }

[ActionScript3.0] 运用JPEGEncoderOptions或者PNGEncoderOptions保存图片到本地的更多相关文章

  1. 【ActionScript】ActionScript3.0对舞台组件的增删改查

    以一个样例来说明ActionScript3.0对舞台组件的增删改查 例如以下图: 在Flash执行的时候,通过脚本.斜向下生成text0-text9十个文本节点. 提供两个功能. 1.在右上角,用户输 ...

  2. 原创教程“ActionScript3.0游戏中的图像编程”開始连载啦!

            经过近两年的不懈努力,笔者的原创教程"ActionScript3游戏中的图像编程"最终在今日划上了完美的句号!这其中记录着笔者多年来在游戏制作,尤其是其中图像处理方 ...

  3. ActionScript3.0(AS3)中的泛型数组Vector

    Adobe官方并没有"泛型数组"的叫法,这是我自己对Vector的叫法(有点标题党),不过Vector在使用上确实跟c#中的泛型数组有些相似之处. 原作者:菩提树下的杨过出处:ht ...

  4. HTML 保存图片到本地

    具体方法有两种  一种是 利用canvas的 toDataUrl  和Html5 里面的 <a>标签里面的 Download 属性 虽然 Download 的兼容性不怎么样  但是在文章后 ...

  5. JS/HTML 保存图片到本地:HTML <a> download 属性

    JS如何保存图片到本地呢?自己百度一下吧! 这里想要说的是,可以利用 HTML 的 <a> 标签 来是实现保存图片到本地的功能,参考代码如下: <a href="http: ...

  6. js+Canvas 利用js 实现浏览器保存图片到本地

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 原生js 保存图片到本地

    <template> <div> <!--创建一个cavas 用来存放图片--> <canvas id="cavasimg" width= ...

  8. flutter 保存图片到本地

    f'lutter 图片的保存 分为俩步: 1.开启存储图片权限开启权限需要用到permission_handler pubspec 添加 permission_handler: ^3.0.1下载包就可 ...

  9. Android笔记之使用ImageView加载网络图片以及保存图片到本地并更新图库

    ImageView显示网络图片 findViewById(R.id.btnLoad).setOnClickListener(new View.OnClickListener() { @Override ...

随机推荐

  1. 谷歌 analytics.js 部分解密版

    源:http://www.google-analytics.com/analytics.js (function(){var aa=encodeURIComponent,f=window,ba=set ...

  2. unity, 读写xls

    可以用npoi: http://npoi.codeplex.com/ 把npoi.dll放在unity里即可. 读取代码: using System.IO;using NPOI.SS.UserMode ...

  3. 九度OJ 1010:计算A+B【字符串和数组】

    /*======================================================================== 题目1010:A + B 时间限制:1 秒内存限制 ...

  4. Android-Adapter用法总结

    1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的 View(ListView,GridView)等地方都需要用到Adapter.如下图 ...

  5. python数据库操作pymysql

    安装数据库: pip3 install pymysql 进行数据库的更新.插入.查询等操作: #!/usr/bin/python3.4 # -*- coding: utf-8 -*- #------- ...

  6. [原]Fedora 20的yum配置

    新装了一套Fedora 20操作系统,又要开始配置yum了.下面总结以下步骤: 1.下载国内比较快的yum源 推荐163的yum源,sohu的yum源也不错,我一般就装第一个,安装163 yum源主页 ...

  7. .NET导入openssl生成的公钥之BEGIN RSA PUBLIC KEY

    .NET导入openssl生成的公钥之BEGIN RSA PUBLIC KEY 我得到了一个公钥,形式如下 -----BEGIN RSA PUBLIC KEY----- MIGJAoGBAMroxz3 ...

  8. 【shell】nmap工具的使用

    NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工 具包,其基本功能有三个,一是探测一组主机是否在线:其次是扫描主机端口,嗅探所提供的网络服务:还可以推断主机所用的操作系统 ...

  9. 剑指offer系列34----按之字形顺序打印二叉树

    [题目]请实现一个函数按照之字形打印二叉树, * 即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印, * 其他行以此类推. 未优化,不是最优解,博主用的是队列 ...

  10. sql数据库带补全终端命令

    mysql pip install mycli pgsql pip install pgcli 都是python脚本,记录备忘.