2006/01/14(Sat)BMP画像の縦幅横幅を得る

はてブ数 2006/01/14 15:39 プログラミング::HSP3 つーさ

bufferにpicloadしてginfo_winx,yみりゃいいんだけど。。
それはなかなかスマートではない。
そう思ったとしても方法が分からないとあれこれさがしてしまって辛いんだな。

ファイルから直接読む方法を置いておく。
普通のWINDOWSなビットマップなら、要素数2の配列変数に
bload fn,bmpsz,8,18
すれば、.0,.1に勝手にx,yが入ってる。

今時存在すらしなそうなOS/2形式のビットマップも読み込む可能性があるなら、
さらにその4バイト手前を読んで、12か40かで判断すればヨイ。

以下サンプルコード。

#module
#deffunc GetBmpSize str fn, array val_sz
bmpsz = 0,0,0
bload fn,bmpsz, 12,14
if bmpsz = 40 : val_sz = bmpsz.1, bmpsz.2 : return 0
if bmpsz = 12 : val_sz = wpeek(bmpsz,4), wpeek(bmpsz,6) : return 1
return -1
#global

fn = dir_exe+"/sample/demo/jp6girl.bmp"
GetBmpSize fn, sz ;// ファイル名, 変数
mes ""+sz.0+","+sz.1

画像ファイルには確実に縦横幅が入ってる。
フォーマットを読めば、ファイルのどこを読めばいいのかがわかる。かも?
http://www.google.com/search?lr=lang_ja&q=