php读取flash文件高宽帧数背景颜色的方法
本文实例讲述了php读取flash文件高宽帧数背景颜色的方法。分享给大家供大家参考。
具体实现方法如下:
<?php /* 示例: $file='/data/ad_files/5/5.swf'; $flash=newflash(); $flash=$flash->getswfinfo($file); echo" 文件的宽高是:".$flash["width"].":".$info["height"]; echo" 文件版本是".$flash["version"]; echo" 文件帧数量是".$flash["framecount"]; echo" 文件帧速率是".$flash["framerate"]; echo" 文件背景颜色是".$flash["bgcolor"]; */ classflash { //是否返回背景色 public$need_back_color=false; //是否返回版本 public$need_version=false; //是否返回帧速率 public$need_framerate=false; //是否返回帧数量 public$need_framecount=false; publicfunction__construct() { } publicfunctiongetswfinfo($filename) { if(file_exists($filename)){ //echo"文件的修改时间:".date("mdyh:i:s.",filemtime($filename))." "; }else{ //echo"目标文件不存在!"; returnarray("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; } privatefunctionmydecbin($str,$index) { $fbin=decbin(ord($str[$index])); while(strlen($fbin)<8)$fbin="0".$fbin; return$fbin; } privatefunctioncolorhex($data) { $tmp=dechex($data); if(strlen($tmp)<2){ $tmp='0'.$tmp; } return$tmp; } privatefunctiongetinfo($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] ); } } ?>
希望本文所述对大家的php程序设计有所帮助。