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 相关文章推荐
一个目录遍历函数
Oct 09 PHP
php截取后台登陆密码的代码
May 05 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
php中动态调用函数的方法
Mar 16 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
聊聊 PHP 8 新特性 Attributes
Aug 19 PHP
Memcached介绍及php-memcache扩展安装
Apr 01 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 变量定义和变量替换的方法
2009/07/30 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
几个常见的软件测试问题
2016/09/07 面试题
应届毕业生个人求职自荐信
2014/01/06 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
公司会议策划方案
2014/05/17 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
中国合伙人观后感
2015/06/02 职场文书
让世界充满爱观后感
2015/06/10 职场文书
单位收入证明范本
2015/06/18 职场文书
订货会主持词
2015/07/01 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python