纯 AS3 将图片转换为 SWF(转自同行“古树悬叶”的博客)
来源:互联网 发布:sql2005恢复数据库 编辑:程序博客网 时间:2024/05/29 03:23
比较简单方便的通过纯 AS3 代码将图片转换为 SWF 格式,可以免去 SWFTools 需要通过命令行将 *.jpg / *.png 之类的文件转换成 *.swf。
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.JPEGEncoderOptions;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.utils.ByteArray;
import flash.utils.Endian;
public class Image2Swf extends Sprite
{
private var isCompress:Boolean = true;//是否为压缩格式的SWF
private var loader:Loader;
private var bitmapData:BitmapData;
public function Image2Swf()
{
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
loader.load(new URLRequest("test.jpg"));
}
private function initHandler(e:Event):void
{
e.target.removeEventListener(Event.INIT, initHandler);
var bitmap:Bitmap = e.target.content as Bitmap;
if(bitmap)
{
bitmapData = bitmap.bitmapData;
var byteArray:ByteArray = new ByteArray();
bitmapData.encode(bitmapData.rect, new JPEGEncoderOptions(), byteArray);
loader = null;
loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, completeHandler );
loader.loadBytes(byteArray);
}
}
private function completeHandler(e:Event):void
{
e.target.removeEventListener( Event.COMPLETE, completeHandler );
if(isCompress)
{
//保存为压缩格式的SWF
saveContentToSWF_compress( e );
}
else
{
//保存为非压缩格式的SWF
saveContentToSWF( e );
}
loader.unload();
loader = null;
bitmapData.dispose();
bitmapData = null;
}
//压缩格式
private function saveContentToSWF_compress( e:Event ):void
{
var swf_head:ByteArray = new ByteArray();
swf_head.endian = Endian.LITTLE_ENDIAN;
swf_head.writeBytes((e.target as LoaderInfo).bytes, 0, 8 );
swf_head[0] = 0x43; // 'C';
swf_head.position = 0;
var swf_body:ByteArray = new ByteArray();
swf_body.endian = Endian.LITTLE_ENDIAN;
swf_body.writeBytes((e.target as LoaderInfo).bytes, 8 );
swf_body.position = 0;
swf_body.compress();
swf_body.position = 0;
var swf_ByteArray:ByteArray = new ByteArray();//包含 head 与 body 的二进制
swf_ByteArray.writeBytes(swf_head);
swf_ByteArray.writeBytes(swf_body);
var file:FileReference = new FileReference();
file.save(swf_ByteArray, "压格式的SWF.swf");//SWF head CWS
}
//非压缩格式
private function saveContentToSWF( e:Event ):void
{
var file:FileReference = new FileReference();
file.save((e.target as LoaderInfo).bytes, "非压格式的SWF.swf");//SWF head 为FWS
}
}
}
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.JPEGEncoderOptions;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.utils.ByteArray;
import flash.utils.Endian;
public class Image2Swf extends Sprite
{
private var isCompress:Boolean = true;//是否为压缩格式的SWF
private var loader:Loader;
private var bitmapData:BitmapData;
public function Image2Swf()
{
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
loader.load(new URLRequest("test.jpg"));
}
private function initHandler(e:Event):void
{
e.target.removeEventListener(Event.INIT, initHandler);
var bitmap:Bitmap = e.target.content as Bitmap;
if(bitmap)
{
bitmapData = bitmap.bitmapData;
var byteArray:ByteArray = new ByteArray();
bitmapData.encode(bitmapData.rect, new JPEGEncoderOptions(), byteArray);
loader = null;
loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, completeHandler );
loader.loadBytes(byteArray);
}
}
private function completeHandler(e:Event):void
{
e.target.removeEventListener( Event.COMPLETE, completeHandler );
if(isCompress)
{
//保存为压缩格式的SWF
saveContentToSWF_compress( e );
}
else
{
//保存为非压缩格式的SWF
saveContentToSWF( e );
}
loader.unload();
loader = null;
bitmapData.dispose();
bitmapData = null;
}
//压缩格式
private function saveContentToSWF_compress( e:Event ):void
{
var swf_head:ByteArray = new ByteArray();
swf_head.endian = Endian.LITTLE_ENDIAN;
swf_head.writeBytes((e.target as LoaderInfo).bytes, 0, 8 );
swf_head[0] = 0x43; // 'C';
swf_head.position = 0;
var swf_body:ByteArray = new ByteArray();
swf_body.endian = Endian.LITTLE_ENDIAN;
swf_body.writeBytes((e.target as LoaderInfo).bytes, 8 );
swf_body.position = 0;
swf_body.compress();
swf_body.position = 0;
var swf_ByteArray:ByteArray = new ByteArray();//包含 head 与 body 的二进制
swf_ByteArray.writeBytes(swf_head);
swf_ByteArray.writeBytes(swf_body);
var file:FileReference = new FileReference();
file.save(swf_ByteArray, "压格式的SWF.swf");//SWF head CWS
}
//非压缩格式
private function saveContentToSWF( e:Event ):void
{
var file:FileReference = new FileReference();
file.save((e.target as LoaderInfo).bytes, "非压格式的SWF.swf");//SWF head 为FWS
}
}
}
0 0
- 纯 AS3 将图片转换为 SWF(转自同行“古树悬叶”的博客)
- 完成Swf2Image库的V1.0版本开发,用于将Swf转换为各类图片
- 一个非常不错的纯源码“PDF转换swf”完全脱离安装第三方插件,直接使用java调用Flash api将PDF转换成图片,在将图片转换成swf。
- 反其道为之,as3加载flex的swf
- 将图片转换为黑白图片的例子
- Google开发的Flash Pro 新插件可将SWF文件转换为Web格式
- 将word文档转换为swf格式小程序---的公开部分代码
- (四)java实现文档的在线浏览-使用swftools将pdf转换为swf
- js将html转换为纯文本
- 将HTMLString转换为纯文本
- 使用java将word文档转换为swf格式
- 利用swftools将pdf转换为swf小例
- swftools工具将pdf文件转换为swf文件
- (三)使用swftools将pdf转换为swf
- 游戏同行的博客
- 将图片转换为Icon
- 将图片转换为bytes
- 将图片转换为圆角图。
- Storm单机部署方案---原创
- sprintf函数的用法以及各种宏定义
- Android开发自学笔记(Android Studio1.3.1)—1.环境搭建
- 整理一下今天的收获(getSharePreferences的使用,解决在非onCreate方法中无法使用的情况)
- Bluetooth协议栈
- 纯 AS3 将图片转换为 SWF(转自同行“古树悬叶”的博客)
- 实现一个EditText中间有字,字两边都可点击触发事件的效果
- 堆和栈的区别
- Android Https相关完全解析 当OkHttp遇到Https
- Android 打开资源raw文件
- 工作中用到的Web技术
- 求公共前缀长度与所选字符串个数的乘积的最大值 Trie树求最值 UVA 11488 Hyper Prefix Sets
- 前端优化(压缩,位置)
- Chrome插件开发 – 浏览器交互