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与ASP
Oct 09 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
Linux下快速搭建php开发环境
Mar 13 PHP
thinkPHP多表查询及分页功能实现方法示例
Jul 03 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
Laravel实现短信注册的示例代码
May 29 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
docker-compose部署php项目实例详解
Jul 30 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 PHP
php array_map()函数实例用法
Mar 03 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
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
php判断是否为json格式的方法
2014/03/04 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
Python中decorator使用实例
2015/04/14 Python
Python通过正则表达式选取callback的方法
2015/07/18 Python
python中的错误处理
2016/04/10 Python
Python3.6正式版新特性预览
2016/12/15 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
Python 从相对路径下import的方法
2018/12/04 Python
django 外键model的互相读取方法
2018/12/15 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
python pillow库的基础使用教程
2021/01/13 Python
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
PHP开发工程师面试问题集锦
2012/11/01 面试题
Final类有什么特点
2012/04/25 面试题
感恩节活动方案
2014/01/27 职场文书
高中生操行评语
2014/04/25 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
森林防火标语
2014/06/23 职场文书
英文演讲稿开场白
2014/08/25 职场文书