php读取flash文件高宽帧数背景颜色的方法
发布时间:2020-12-13 02:19:50 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:php读取flash文件高宽帧数背景颜色的方法》要点: 本文介绍了PHP实战:php读取flash文件高宽帧数背景颜色的方法,希望对您有用。如果有疑问,可以联系我们。 PHP编程 本篇章节讲解php读取flash文件高宽帧数背景颜色的办法.供大家参考研究
《PHP实战:php读取flash文件高宽帧数背景颜色的方法》要点: PHP编程本篇章节讲解php读取flash文件高宽帧数背景颜色的办法.分享给大家供大家参考. PHP编程具体实现办法如下:
代码如下:
<?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,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,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] ??????????? ); ? } } ?> PHP编程希望本文所述对大家的php程序设计有所赞助. 欢迎参与《PHP实战:php读取flash文件高宽帧数背景颜色的方法》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |