swfheader是一个处理swf文件的工具脚本,可用于读取swf文件头信息、压缩和解压缩swf文件。很早以前发布过一个0.01版。最近复审了代码,发现了一个愚蠢的读二进制文件错误导致没办法正确的解压或者压缩swf文件。今天更正了此bug,重构了部分代码并做了更多测试,已经可以正常使用。
项目地址:
http://code.google.com/p/swf-util/
项目描述:
一个轻量级的纯Ruby实现的swf文件处理脚本,可以读取swf文件头信息(大小、帧率、长宽、是否压缩、flash版本信息等)、压缩swf文件和解压缩swf文件。基于Apache License2协议发布。
示例
下载swfheader0.10.zip后,解压后有README文件和swfheader-0.10.gem,通过
gem install swfheader-0.10.gem
命令安装swfheader即可使用。1、读文件头信息:
require 'swfheader'
header=SwfUtil::read_header("c:/test.swf"))
header.signature # 标志字符 CWS表示压缩的swf文件,FWS表示未压缩的
header.compression #compressed or uncompressed
header.size #文件大小
header.nbits #twips为单位的画面尺寸
header.xmax
header.ymax
header.width
header.height
header.version #flash版本
header.frame_date #帧率
header.frame_count #总帧数
header.inspect #信息描述字符串
header=SwfUtil::read_header("c:/test.swf"))
header.signature # 标志字符 CWS表示压缩的swf文件,FWS表示未压缩的
header.compression #compressed or uncompressed
header.size #文件大小
header.nbits #twips为单位的画面尺寸
header.xmax
header.ymax
header.width
header.height
header.version #flash版本
header.frame_date #帧率
header.frame_count #总帧数
header.inspect #信息描述字符串
header.inspect一个示例输出:
signature: CWS
version: 8
compression: compressed
size: 5737111
nbits: 14
xmax: 7200
ymax: 5760
width: 360
height: 288
frameRate: 25
frameCount: 10409
version: 8
compression: compressed
size: 5737111
nbits: 14
xmax: 7200
ymax: 5760
width: 360
height: 288
frameRate: 25
frameCount: 10409
2、解压缩swf文件,如果源文件本身没有被压缩那么将抛出异常:
require 'swfheader'
SwfUtil::decompress_swf("c:/test.swf","c:/test_decompressed.swf")
SwfUtil::decompress_swf("c:/test.swf","c:/test_decompressed.swf")
3、压缩swf文件,如果源文件已经被压缩将抛出异常:
require 'swfheader'
SwfUtil::compress_swf("c:/test.swf","c:/test_compressed.swf")
文章转自庄周梦蝶 ,原文发布时间2008-10-11 SwfUtil::compress_swf("c:/test.swf","c:/test_compressed.swf")