perlでswfファイルの縦横サイズ・publishバージョン取得
経緯は上のperlの話と同じです。
縦横サイズ
まず、phpの場合は単純に縦横サイズをとってくるだけであればgetimagesizeという関数を使えば一発でした。
この関数はGDライブラリが入ってなくても使用できます。
使い方の例は下記。
<?php
$filename = './file.swf';
$size = getimagesize($filename);?>
$sizeの中身は下記のようになります。
Array(
[0] => 240
[1] => 320
[2] => 4
[3] => width="240" height="320"
[mime] => application/x-shockwave-flash
)
$size[2]の4という数字はファイルの種別を表しています。
4はIMAGETYPE_SWFを意味するのでswfファイルであるというだけです。
IMAGETYPEの詳細はこちら
getimagesize関数の詳細はこちらをごらん下さい。
バージョン
MINGとかをうまく使えばスマートにバージョンとってこれるのかもしれませんが、モジュール追加することは避けたかった+バージョンさえ取れれば良いという考えだったので少々泥臭いやり方で取りました。
swfファイルのバイナリをのぞくと先頭が"FWS"で始まり4バイト目にバージョンが入っていることがわかったので直接それを取得。
サンプルはこんな感じ。(細かい突っ込みはなしで!)
<?php$filename = './file.swf';
$fp = fopen($filename,"rb");
$line = fgets($fp,5);
//4バイト目から1バイト切り出し、バイナリから16進数に変換して、整数型に変換
$char = intval(bin2hex(substr($line,3,1)));
fclose($fp);print $char."\n";
?>
うん、こまけぇこたぁいいんだよ!