php读取flash文件高宽帧数背景颜色的方法_php教程-查字典教程网
php读取flash文件高宽帧数背景颜色的方法
php读取flash文件高宽帧数背景颜色的方法
发布时间:2016-12-29 来源:查字典编辑
摘要:本文实例讲述了php读取flash文件高宽帧数背景颜色的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下:getswfinfo...

本文实例讲述了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]

);

}

}

?>

希望本文所述对大家的php程序设计有所帮助。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新php教程学习
    热门php教程学习
    编程开发子分类