請問一下要如何讀取各種檔案的檔頭資料呢? |
答題得分者是:P.D.
|
ss61313
一般會員 發表:1 回覆:3 積分:0 註冊:2010-04-26 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
ss61313
一般會員 發表:1 回覆:3 積分:0 註冊:2010-04-26 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
這是本站網友提供的判斷公式, 我有稍微改一下(SORRY, 我忘了那位)
回傳1:BMP, 2:JPG [code delphi] function IsBMPfile(const AFilename: String; var AWidth, AHeight: Integer): integer; var f: TFileStream; bfh: TBitmapFileHeader; HeaderSize: DWord; w: Word; begin Result:= 0; AWidth:= 0; AHeight:= 0; f:= TFileStream.Create(AFilename, fmOpenRead or fmShareDenyNone); try f.ReadBuffer(bfh, SizeOf(bfh)); // BMP $4D42, JPG $D8FF if (bfh.bfType=$4D42) or (bfh.bfType=$D8FF) then begin case bfh.bfType of $4D42: result:= 1; $D8FF: result:= 2; end; f.ReadBuffer(HeaderSize, SizeOf(HeaderSize)); case HeaderSize of // OS/2 Bitmap SizeOf(TBitmapCoreHeader): begin f.ReadBuffer(w, SizeOf(w)); AWidth:= w; f.ReadBuffer(w, SizeOf(w)); AHeight:= w; end; SizeOf(TBitmapInfoHeader), SizeOf(TBitmapV4Header), SizeOf(TBitmapV5Header): begin f.ReadBuffer(AWidth, SizeOf(AWidth)); f.ReadBuffer(AHeight, SizeOf(AHeight)); end; // unknown Bitmap format else exit; end; // there are top down bitmaps with a negative height AHeight:= Abs(AHeight); end; finally f.Free; end; end; [/code] |
ss61313
一般會員 發表:1 回覆:3 積分:0 註冊:2010-04-26 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
ss61313
一般會員 發表:1 回覆:3 積分:0 註冊:2010-04-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |