이 글의 예제에서는 PHP에서 플래시 파일의 높이, 너비, 프레임 번호, 배경색을 읽는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요.
구체적인 구현 방법은 다음과 같습니다.
/*
예:
$file = '/data/ad_files/5/5.swf'
$flash = 새로운 플래시()
$flash = $flash->getswfinfo($file)
에코 "
파일의 너비와 높이는 ".$flash["width"].":".$info["height"];
에코 "
파일 버전은 ".$flash["version"];
에코 "
파일 프레임 수는 ".$flash["framecount"];
에코 "
파일 프레임 속도는 ".$flash["framerate"];
에코 "
파일 배경색은 ".$flash["bgcolor"];
*/
클래스 플래시
{
//배경색 반환 여부
공개 $need_back_color = 거짓
//버전 반환 여부
공개 $need_version = false
//프레임 속도를 반환할지 여부
공개 $need_framerate = false
//프레임 수를 반환할지 여부
공개 $need_framecount = 거짓
공개 함수 __construct()
{
}
공개 함수 getswfinfo( $filename )
{
If ( file_exists($filename) ) {
//echo "파일 수정 시간:".date("m d y h:i:s.", filemtime($filename))."
";
} 다른 {
//echo "대상 파일이 존재하지 않습니다!"
배열 반환( "error" => $filename )
}
//파일 열기
$rs = fopen($filename,"r")
//파일 데이터 읽기
$str = fread( $rs , 파일 크기( $filename ) )
///
If($str[0] == "f")
{
//에코 "
파일이 이미 압축 해제되었습니다: ";
} 다른 {
$first = substr($str,0,8)
$last = substr($str,8)
//
$last = gzuncompress($last)
//
$str = $마지막
$str[0] = "f"
//에코 "
압축해제된 파일 정보: ";
}
$info = $this->getinfo( $str );
fclose( $rs )
$정보 반환
}
개인 함수 mydecbin($str,$index)
{
$fbin = decbin(ord($str[$index]))
동안(strlen($fbin)<8)$fbin="0".$fbin
$fbin 반환
}
개인 함수 colorhex($data)
{
$tmp = dechex($data)
If (strlen($tmp)<2) {
$tmp='0' .$tmp
}
$tmp 반환
}
개인 함수 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 = 배열()
for( $i = 0 ; $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]));
부서지다;
}
}
}
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] );
}
반환 배열( "bgcolor" => $bgcolor ,
"버전" => $버전 ,
"프레임 속도" => $framerate ,
"프레임 수" => $framecount ,
'너비'=>$rec[1],
'높이'=>$rec[3]
);
}
}
?>
希望本文所述对大家程序设计有所帮助。