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程序设计有所帮助。