好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php读取flash文件高宽帧数背景颜色代码 - php高级应

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] ); //开源代码phpfensi.com       }             return    array  (  "bgcolor"  =>  $bgcolor  ,               "version"  =>  $version  ,                "framerate"  =>  $framerate  ,                "framecount"  =>  $framecount  ,                'width' => $rec [1],               'height' => $rec [3]              );    }  }  ?> 

查看更多关于php读取flash文件高宽帧数背景颜色代码 - php高级应的详细内容...

  阅读:45次