php读取flash文件高宽帧数背景颜色代码
php读取flash文件高宽帧数背景颜色代码
<?php
/*
示例:
$file = /data/ad_files/5/5.swf;
$flash = new flash();
$flash = $flash->getswfinfo($file);
echo "
文件的宽高是:".$flash["width"].":".$info["height"];
echo "
文件版本是".$flash["version"];
echo "
文件帧数量是".$flash["framecount"];
echo "
文件帧速率是".$flash["framerate"];
echo "
文件背景颜色是".$flash["bgcolor"];
*/
class flash {
//是否返回背景色
public $need_back_color = false;
//是否返回版本
public $need_version = false;
//是否返回帧速率
public $need_framerate = false;
//是否返回帧数量
public $need_framecount = false;
public function __construct() {
}
public function getswfinfo($filename) {
if (file_exists($filename)) {
//echo "文件的修改时间:".date("m d y h:i:s.", filemtime($filename))."";
} else {
//echo "目标文件不存在!";
return array(
"error" => $filename
);
}
//打开文件
$rs = fopen($filename, "r");
//读取文件的数据
$str = fread($rs, filesize($filename));
///
if ($str[0] == "f") {
//echo "文件已是解压缩的文件:";
} else {
$first = substr($str, 0, 8);
$last = substr($str, 8);
//
$last = gzuncompress($last);
//
$str = $first . $last;
$str[0] = "f";
//echo "解压缩后的文件信息:";
}
$info = $this->getinfo($str);
fclose($rs);
return $info;
}
private function mydecbin($str, $index) {
$fbin = decbin(ord($str[$index]));
while (strlen($fbin) < 8) $fbin = "0" . $fbin;
return $fbin;
}
private function colorhex($data) {
$tmp = dechex($data);
if (strlen($tmp) < 2) {
$tmp = 0 . $tmp;
}
return $tmp;
}
private function getinfo($str) {
//换算成二进制
$fbin = $this->mydecbin($str, 8);
//计算rec的单位长度
$slen = bindec(substr($fbin, 0, 5));
//计算rec所在的字节
$recsize = $slen * 4 + 5;
$recsize = ceil($recsize / 8);
//rec的二进制
$recbin = $fbin;
for ($i = 9; $i < $recsize + 8; $i++) {
$recbin.= $this->mydecbin($str, $i);
}
//rec数据
$rec = array();
for ($i = 0; $i < 4; $i++) {
$rec[] = bindec(substr($recbin, 5 + $i * $slen, $slen)) / 20;
}
if ($this->need_back_color) {
//背景颜色
for ($i = $recsize + 12; $i < strlen($str); $i++) {
if (ord($str[$i]) == 67 && ord($str[$i + 1]) == 2) {
$bgcolor = $this->colorhex(ord($str[$i + 2])) . $this->colorhex(ord($str[$i + 3])) . $this->colorhex(ord($str[$i + 4]));
break;
}
}
}
if ($this->need_version) {
//版本
$version = ord($str[3]);
}
if ($this->need_framerate) {
//帧速率
$framerate = ord($str[$recsize + 8]) / 256 + ord($str[$recsize + 9]);
}
if ($this->need_framecount) {
//帧数量
$framecount = ord($str[$recsize + 11]) * 256 + ord($str[$recsize + 10]);
}
return array(
"bgcolor" => $bgcolor,
"version" => $version,
"framerate" => $framerate,
"framecount" => $framecount,
"width" => $rec[1],
"height" => $rec[3]
);
}
}
?>永久地址:http://www.phprm.com/frame/php1005193.html
转载随意~请带上教程地址吧^^