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在Web开发领域的优势
Oct 09 PHP
php的memcached客户端memcached
Jun 14 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
php实例分享之mysql数据备份
May 19 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
destoon实现公司新闻详细页添加评论功能的方法
Jul 15 PHP
php实现递归与无限分类的方法
Feb 16 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
php递归调用删除数组空值元素的方法
Apr 28 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
PHP中number_format()函数的用法讲解
Apr 08 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下使用strpos需要注意 === 运算符
2010/07/17 PHP
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python中偏函数partial用法实例分析
2015/07/08 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
python线程、进程和协程详解
2016/07/19 Python
Python中GIL的使用详解
2018/10/03 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
python如何统计代码运行的时长
2019/07/24 Python
python递归下载文件夹下所有文件
2019/08/31 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
Java编程面试题
2016/04/04 面试题
党校学习思想汇报
2014/01/06 职场文书
元旦活动感言
2014/03/08 职场文书
人事局接收函
2015/01/31 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书