This article illustrates how PHP reads the background color of the high-width frame of a flash file. Share to everyone for your reference.
The implementation methods are as follows:
The code is as follows:
/*
Example:
$file = '/data/ad_files/5/5.swf ';
$flash = new Flash ();
$flash = $flash->getswfinfo ($file);
echo "
The height of the file is: ". $flash [" width]. ". $info [" height "];
echo "
The file version is ". $flash [" Version "];
echo "
The number of file frames is ". $flash [" Framecount "];
echo "
The file frame rate is ". $flash [" framerate "];
echo "
The file background color is ". $flash [" bgcolor "];
*/
Class Flash
{
Whether to return a background color
Public $need _back_color = false;
Whether to return version
Public $need _version = false;
Whether to return the frame rate
Public $need _framerate = false;
Whether to return the number of frames
Public $need _framecount = false;
Public Function __construct ()
{
}
Public Function Getswfinfo ($filename)
{
if (file_exists ($filename)) {
echo "File modification Time:". Date ("M d y h:i:s.", Filemtime ($filename)). "
";
} else {
echo "Destination file does not exist!";
Return Array ("error" => $filename);
}
Open File
$rs = fopen ($filename, "R");
Reading data from a file
$str = Fread ($rs, FileSize ($filename));
///
if ($str [0] = = "F")
{
echo "
File is already uncompressed file: ";
} else {
$first = substr ($str, 0,8);
$last = substr ($STR, 8);
//
$last = gzuncompress ($last);
//
$str = $first. $last;
$str [0] = "f";
echo "
Unzip the file information: ";
}
$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)
{
Converted into binary
$fbin = $this->mydecbin ($str, 8);
Calculate the unit length of rec
$slen = Bindec (substr ($fbin, 0, 5));
Calculate the bytes in which the Rec is located
$recsize = $slen * 4 + 5;
$recsize = Ceil ($recsize/8);
Rec Binary
$recbin = $fbin;
for ($i = 9; $i < $recsize + 8; $i + +)
{
$recbin. = $this->mydecbin ($str, $i);
}
REC Data
$rec = Array ();
for ($i = 0; $i < 4; $i + +)
{
$rec [] = Bindec (substr ($recbin, 5 + $i * $slen, $slen))/20;
}
if ($this->need_back_color) {
Background color
for ($i = $recsize + $i < strlen ($STR); $i + +)
{
if (Ord ($str [$i]) = = && 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
$version = Ord ($str [3]);
}
if ($this->need_framerate) {
Frame rate
$framerate = Ord ($str [$recsize + 8])/256 + ord ($str [$recsize + 9]);
}
if ($this->need_framecount) {
Number of Frames
$framecount = Ord ($str [$recsize +]) * 256 + ord ($str [$recsize + 10]);
}
Return Array ("bgcolor" => $bgcolor,
"Version" => $version,
"Framerate" => $framerate,
"Framecount" => $framecount,
' Width ' => $rec [1],
' Height ' => $rec [3]
);
}
}
?>