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源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
PHP程序员最常犯的11个MySQL错误小结
Nov 20 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
基于empty函数的判断详解
Jun 17 PHP
php根据操作系统转换文件名大小写的方法
Feb 24 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
php实现通用的信用卡验证类
Mar 24 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
PHP多维数组排序array详解
Nov 21 PHP
实例讲解PHP表单验证功能
Feb 15 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 has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
destoon常用的安全设置概述
2014/06/21 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
详解javascript遍历方式
2015/11/11 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
Python的re模块正则表达式操作
2016/05/25 Python
一看就懂得Python的math模块
2018/10/21 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
2019年c语言经典面试题目
2016/08/17 面试题
公司员工活动策划方案
2014/08/20 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python