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 相关文章推荐
java EJB 加密与解密原理的一个例子
Jan 11 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
Nov 03 PHP
浅析PHP绘图技术
Jul 03 PHP
php实现读取超大文件的方法
Jul 28 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
Dec 29 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
laravel学习教程之存取器
Jul 30 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
微信公众平台开发教程②微信端分享功能图文详解
Apr 10 PHP
PHP哈希表实现算法原理解析
Dec 11 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
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
VSCode配置react开发环境的步骤
2017/12/27 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
使用Python开发windows GUI程序入门实例
2014/10/23 Python
Python判断字符串与大小写转换
2015/06/08 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
python中关于for循环的碎碎念
2017/06/30 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
基于python指定包的安装路径方法
2018/10/27 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
上海天奕面试题笔试题
2015/04/19 面试题
优秀本科生求职推荐信
2014/02/24 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
Python 实现定积分与二重定积分的操作
2021/05/26 Python