首页 > php框架 > php读取flash文件高宽帧数背景颜色代码

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

转载随意~请带上教程地址吧^^

标签:none

发表留言