|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"様々なJPEGファイルの読み込み方法"
{Delphi3.xのTJPEGで、標準のJPEGはもちろん、Mac BinaryのあるJPEG
や、リコーのデジカメが当初(DC-2シリーズまで)採用していたJ6I
ファイル、SONYのサイバーショットのPMPファイルが表示できます。
uses にJPEGを追加して、フォームに Button1、OpenDialog1、Image1
をセットしてください。}
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TMemoryStream;
Jpg: TJPEGImage;
Hd: Integer;
begin
if OpenDialog1.Execute then
begin
Hd := Header(OpenDialog1.FileName);
if Hd < 0 then Exit;//JFIFではないので読み込めないため
try
Stream := TMemoryStream.Create;
Stream.LoadFromFile(OpenDialog1.FileName);
Stream.Seek(Hd, soFromBeginning);
try
Jpg := TJPEGImage.Create;
Jpg.LoadFromStream(Stream);
Image1.Picture.Bitmap.Assign(Jpg)
finally
Jpg.Free;
end;
finally
Stream.Free;
end;
end;
end;
function TForm1.Header(FileName: string): Integer;
var
F: File;
SOI: Word;
I: Integer;
begin
Result := -1;
AssignFile(F, FileName);
FileMode := 0;
{$I-}
Reset(F, 1);
try
for I := 0 to 256 do
begin
Seek(F, I);
BlockRead(F, SOI, 2);
if Swap(SOI) = $FFD8 then
begin
Result := I;
Break;
end;
end;
finally
CloseFile(F);
{$I+}
end;
end;
=======================================
クラシックカメラと拙作フリーソフトのホームページ『奇珍館』
URL:http://member.nifty.ne.jp/~yun/
1998.03.09 更新! 新作:MbCut公開
=======================================
Original document by YUN 氏 ID:(JCC01421)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|