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.MVC的模板标签系统(二)
Sep 05 PHP
php桌面中心(二) 数据库写入
Mar 11 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
获取URL文件名后缀
Oct 24 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
php jquery 多文件上传简单实例
Dec 23 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
PHP小技巧之函数重载
Jun 02 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
Jun 21 PHP
详解PHP发送邮件知识点
May 06 PHP
PHP大文件切割上传功能实例分析
Jul 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下把数组保存为文件格式的实例应用
2010/02/08 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
php调整服务器时间的方法
2015/04/03 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
详解vue axios中文文档
2017/09/12 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
Python中的字典遍历备忘
2015/01/17 Python
python如何读写json数据
2018/03/21 Python
Python实现全排列的打印
2018/08/18 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
维德科技C#面试题笔试题
2015/12/09 面试题
汽车运用工程毕业生自荐信
2013/10/29 职场文书
汽车检测与维修专业求职信
2013/10/30 职场文书
高二物理教学反思
2014/02/08 职场文书
临床护理求职信
2014/04/26 职场文书
公司任命书范本
2014/06/04 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB