お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"JPEG/GIFのサイズ取得"



//JPEGとGIFの表示サイズ(縦横のピクセル数)を取得します。
//JPEGはJPEG UNITで取得できるのですがGIFは無理矢理読んでいます。
//上位バイトと下位バイトの位置が反転しているで読む順番に注意)
//(もう少し何とかなりそう・・乞う、添削)
//フォームにButtonを1,EditBoxを2、OpenDialogを配置します。
//Buttonを押すとファイル選択ダイヤログを表示し、選択したjpeg/gifファイル
//の縦横のピクセル数をEditBOXに表示します。



uses
  Jpeg;
var
  JpegImage:TJpegImage;

procedure TForm1.Button1Click(Sender: TObject);
var
   F:File;data:byte;numread,hh,ww:integer;
   h1,h2,w1,w2,Ext:string; //h1は上位1バイトめ
begin
    if OpenDialog1.Execute then
    begin
                Ext:= ExtractFileExt(OpenDialog1.FileName);
        if (Ext='.jpg') or (Ext='.JPG') then      //JPEGサイズの把握
        begin
                JpegImage:=TJpegImage.Create;
                with JpegImage do
                begin
                     LoadFromFile(OpenDialog1.FileName);
                     Edit1.Text:=IntToStr(Width);
                     Edit2.Text:=IntToStr(Height);
                     Free;
                end;
        end;
        if (Ext='.gif') or (Ext='.GIF') then     //gifサイズの把握
        begin
                Assignfile(F,OpenDialog1.FileName);
                Reset(F,1);
                Seek(F,9);
                BlockRead(F,data,sizeOf(data),numread);
                h1:=Format('%x',[data]);
                Seek(F,8);
                BlockRead(F,data,sizeOf(data),numread);
                h2:=Format('%x',[data]);
                Seek(F,7);
                BlockRead(F,data,sizeOf(data),numread);
                w1:=Format('%x',[data]);
                Seek(F,6);
                BlockRead(F,data,sizeOf(data),numread);
                w2:=Format('%x',[data]);
                CloseFile(F);

                hh:=StrToInt('$'+h1+h2);
                ww:=StrToInt('$'+w1+w2);
                Edit1.Text:=IntToStr(ww);//横ピクセル数
                Edit2.Text:=IntToStr(hh);//縦ピクセル数
        end;
     end;
end;
                                     97/11/01(土) 多摩の岳夫(GFA03144)
                                http://www.asahi-net.or.jp/~ij7t-snhr/

Original document by 多摩の岳夫      氏 ID:(GFA03144)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum