Mikes Delphi Site

Mikes Delphi Site

Programmierung mit ObjectPascal

JPEG-Bilder laden

Eingestellt: 06.05.2001

In der folgenden Routine soll ein JPEG-Bild in einem TImage dargestellt werden. Um sicherzustellen, dass das Bild auch tatsächlich im gewünschten TImage (hier Image1) dargestellt wird, wird zunächst das Bild in das Objekt MyJpeg vom Typ TJPEGImage mit der Klassen-Methode LoadFromFile geladen. Anschließend wird mit der Klassen-Methode DIBNeeded in eine Bitmap erzeugt, die dann an das Objekt MyBitmap vom Typ TBitmap übergeben wird.

Im Beispiel wird anschließend das richtige Darstellungsverhältnis für das gegebene Image1 ausgerechnet und dann das Objekt Image1 in diese errechneten Größe angepaßt. Im nächsten Schritt wird dann das Bild aus dem Objekt MyBitmap in die Komponente Image1 kopiert und das Bild via der Methode Stretch an die errechnete Größe angepaßt.

uses ..., Jpeg;

procedure TForm1.Button1Click(Sender: TObject);
var
    nFaktor: Double;
    str: String;
    MyJpeg: TJPEGImage;
    MyBitmap: TBitmap;
begin
    if OpenPictureDialog.Execute then
    begin
        Screen.Cursor := crHourGlass;
        MyBitmap := TBitmap.Create;
        MyBitmap.Assign(nil);
        str := LowerCase(OpenPictureDialog.FileName);
        Image1.Height := 241;
        Image1.Width := 241;
        Image1.Stretch := False;
        if (LowerCase(ExtractFileExt(str)) = '.jpg') or (LowerCase(ExtractFileExt(str)) = '.jpeg') then
        begin
            MyJpeg := TJpegImage.Create;
            MyJpeg.LoadFromFile(str);
            MyJpeg.DIBNeeded;
            MyBitmap.Assign(MyJpeg);
            MyJpeg.Free;
        end
        else
        begin
            MessageDlg(Format('FATALER FEHLER!%sDieses Bildformat ist unbekannt!',[#13#10]),mtError,[mbAbort],0);
            MyBitmap.Free;
            Exit;
        end;
        if MyBitmap.Width > MyBitmap.Height then
        begin
            nFaktor := 241 / MyBitmap.Width;
            Image1.Height := Trunc(MyBitmap.Height * nFaktor) + 1;
        end
        else
        begin

            nFaktor := 241 / MyBitmap.Height;
            Image1.Width := Trunc(MyBitmap.Width * nFaktor) + 1;
        end;
        Image1.Picture.Bitmap.Assign(MyBitmap);
        Image1.Stretch := True;
        MyBitmap.Free;
        Screen.Cursor := crDefault;
    end;
end;

 

© 2017 Michael Kraemer, erstellt mit WebsiteBaker CE (WBCE 1.1.11)