掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
画像ファイルのフォーマットを識別するには? (ID:139269)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> fmt(0) にファイルの最初の8バイトを格納し、分類しているのだと いえ、違います。 最初に書いた『ファイルの先頭バイトを読む方法』と、 2 番目の『GDIPlus.DLL の API を使う方法』は、まったくの別物です。 > 多分、バイトを Currency 型で表現した時の変換ルールが > 分からないせいで、理解できないのだと思うのですが。 fmt に入るのは、画像情報を表す GUID 値です。 やたこさんが書かれた「bitmap.RawFormat.Guid」に相当する情報です。 GUID とは、128bit(16バイト)のデータです。 そして VB の 型(Currency) は、64 ビット (8 バイト) の変数です。 ですから、 >> Dim fmt(1) As Currency とすると、16 バイト分のメモリ領域を確保できるので、ここに、 GUID 構造体の値を受け取っているというわけです。 > If fmt(1) = 338308179558612.8797@ Then > は何をしているのでしょうか?? GDI+ で扱える各画像の GUID 値は、このようになります。 b96b3cab-0728-11d3-9d7b-0000f81ef32e … Bitmap b96b3cae-0728-11d3-9d7b-0000f81ef32e … JPEG b96b3cb0-0728-11d3-9d7b-0000f81ef32e … GIF b96b3cac-0728-11d3-9d7b-0000f81ef32e … EMF b96b3cad-0728-11d3-9d7b-0000f81ef32e … WMF b96b3cb1-0728-11d3-9d7b-0000f81ef32e … TIFF b96b3caf-0728-11d3-9d7b-0000f81ef32e … PNG b96b3cb5-0728-11d3-9d7b-0000f81ef32e … ICON 後続 8 バイトの 9d7b-0000f81ef32e が、すべて一致していますよね。 それが >> If fmt(1) = 338308179558612.8797@ Then のチェックにあたります。 9d7b-0000f81ef32e というデータを、リトルエンディアンとして並び替えると 2EF31EF800007B9D という 16 進数表現になり、10進数に変換すると、 3383081795586128797 という数値になります。 Currency 型は、これを 1/10000 した値として表現されるので、 338308179558612.8797@ となるわけです。(@ は、Currency の型宣言文字です)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.