php读取flash文件高宽帧数背景颜色的方法


Posted in PHP onJanuary 06, 2015

本文实例讲述了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&amp;mysql(六)
Oct 09 PHP
修改了一个很不错的php验证码(支持中文)
Feb 14 PHP
PHPEXCEL 使用小记
Jan 06 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
PHP中判断变量为空的几种方法分享
Aug 26 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
PHP积分兑换接口实例
Feb 09 PHP
php生成圆角图片的方法
Apr 07 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
PHP实现验证码校验功能
Nov 16 PHP
php自动获取关键字的方法
Jan 06 #PHP
windows7下php开发环境搭建图文教程
Jan 06 #PHP
PHP中$this和$that指针使用实例
Jan 06 #PHP
php缓冲输出实例分析
Jan 05 #PHP
php中fsockopen用法实例
Jan 05 #PHP
php中Socket创建与监听实现方法
Jan 05 #PHP
php实现计数器方法小结
Jan 05 #PHP
You might like
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php miniBB中文乱码问题解决方法
2008/11/25 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
PHP之预定义接口详解
2015/07/29 PHP
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
python3中set(集合)的语法总结分享
2017/03/24 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
python实现飞机大战
2018/09/11 Python
PyQt5实现简易计算器
2020/05/30 Python
python各层级目录下import方法代码实例
2020/01/20 Python
python中的列表和元组区别分析
2020/12/30 Python
struct和class的区别
2015/11/20 面试题
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
毕业生的自我评价分享
2013/12/18 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
C++程序员求职信
2014/05/07 职场文书
师范大学生求职信
2014/06/13 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
担保书范文
2015/01/20 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
python数字转对应中文的方法总结
2021/08/02 Python