加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php获取flash文件高宽帧数背景颜色代码

发布时间:2022-02-16 01:05:02 所属栏目:PHP教程 来源:互联网
导读:?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 文件帧
  <?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] );//开源代码Cuoxin.com
      }
       
      return  array ( "bgcolor" => $bgcolor ,
              "version" => $version ,  
              "framerate" => $framerate ,  
              "framecount" => $framecount ,  
              'width'=>$rec[1],
              'height'=>$rec[3]
              );
    }
  }
  ?>
 

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读