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+DBM的同学录程序(5)
Oct 09 PHP
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
PHP+ajax 无刷新删除数据
Feb 20 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
php session劫持和防范的方法
Nov 12 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
PHP抓取、分析国内视频网站的视频信息工具类
Apr 02 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
php的4种常见运行方式
Mar 20 PHP
yii2 resetful 授权验证详解
May 18 PHP
基于Laravel实现的用户动态模块开发
Sep 21 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/04/30 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
幼教毕业生自我鉴定
2014/01/12 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
用Python实现屏幕截图详解
2022/01/22 Python
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
redis 解决库存并发问题实现数量控制
2022/04/08 Redis