16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:JPEGファイルからExifのデータを取得・"
この発言は #01347 河邦 正 さんのJPEGファイルからExifのデータを取得・表示 に対するコメントです
Doneさん、より詳細なサンプルコードをありがとうございます。
さて、私が先に出したサンプルコード( nifty:FDELPHI/MES/16/1347 )
に4箇所の修正点があります。そのうち1点は明らかなバグ修正です。
失礼しました。
GetSegFromJPEG 関数および GetExifFromJPEG 関数でそれぞれ2ヶ所
の修正個所があります(合計4箇所)。
【GetSegFromJPEG 関数の変更点その1、異常フォーマット対策の強化】
>procedure GetSegFromJPEG(Dst, Src: TStream; SegType: BYTE);
>var
> bCode: BYTE;
> wData: WORD;
>begin
を下記に変更します。
function GetSegFromJPEG(Dst, Src: TStream; SegType: BYTE): Boolean;
var
bCode: BYTE;
wData: WORD;
begin
Result := FALSE;
【GetSegFromJPEG 関数の変更点その2、異常フォーマット対策の強化】
> else if bCode = $da then
> // SOS(Start Of Scan) セグメント
> // このセグメント以降がイメージデータ
> break
を下記に変更します。
else if bCode = $da then
begin
// SOS(Start Of Scan) セグメント
// このセグメント以降がイメージデータ
Result := TRUE;
break;
end
【GetExifFromJPEG 関数の変更点その1、異常フォーマット対策の強化】
> // APP1 セグメントを取得する
> GetSegFromJPEG(Data, Src, $e1);
> if(Data.Size > 0)and
> (StrLIComp(PChar(Data.Memory), PChar('Exif'+#0), 5) = 0) then
を下記に変更します。
// APP1 セグメントを取得する
if GetSegFromJPEG(Data, Src, $e1) and
(Data.Size > 0)and
(StrLIComp(PChar(Data.Memory), PChar('Exif'+#0), 5) = 0) then
【GetExifFromJPEG 関数の変更点その2、未設定変数を参照するバグ修正】
> if (Data.Read(Header, sizeof(Header)) = sizeof(Header)) and
> ((Header.ID = $4949)or(Header.ID = $4d4d)) and
> (GetWORD(Header.Code) = 42) then
を下記に変更します。
if (Data.Read(Header, sizeof(Header)) = sizeof(Header)) and
(((Header.ID = $4949)and(Header.Code = $2a))or
((Header.ID = $4d4d)and(Header.Code = $2a00))) then
2001/06/15、河邦 正(GCC02240@nifty.com)
(http://homepage2.nifty.com/kht0000/、NIFTY外へ私作のComponentの
公開用)
Original document by 河邦 正 氏 ID:(GCC02240)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|