Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi BMP und JPG Bilder in Resource-Datei speichern und verwenden (https://www.delphipraxis.net/75558-bmp-und-jpg-bilder-resource-datei-speichern-und-verwenden.html)

Ares 21. Aug 2006 12:54


BMP und JPG Bilder in Resource-Datei speichern und verwenden
 
Hallo!

Vor ein paar Tagen habe ich hier die Frage gestellt, wie man ich verschiedene Bilder in einer Datei speichern kann um dann aus dem Programm auf diese zuzugreifen. Bei der ganzen Sache geht es um die Übersetzung eines Programms, die Bilder einer Sprache sollen in eine gemeinsame Datei eingefügt werden.

Ich bekam den Tipp, die Bilder in eine Resource-Datei zu compilieren und diese dann in eine DLL einzubinden. Je nach ausgewählter Sprache kann ich dann die jeweilige DLL in das Programm einbinden und die Bilder laden:

Delphi-Quellcode:
var DLLHandle: THandle;

begin
  DLLHandle := LoadLibrary('Bilder_DE.dll');
  TBitmap.LoadFromResourceID(DLLHandle, 1);
end;
Ich habe es nun geschafft auf diese Art und Weise Bitmap Bilder zu verwenden. Aber wie funktioniert das ganze bei JPG Bildern? Ist es überhaupt korrekt, wie ich diese in die Resource-Datei einfüge:

Code:
1 BITMAP "test.bmp"
2 JPG "test.jpg"
Das man Bitmaps mit "BITMAP" einbindet weiß ich, "JPG" habe ich dann einfach mal geraten. Der Compiler hat jedenfalls nicht gemeckert. Ist das korrekt?

Und wie kann ich dann auf die JPG Bilder zugriefen. TJPGImage hat keine LoadFromResourceID Methode. Wie kann ich also einem TImage ein JPG Bild aus der Resource Datei zuweisen?

Noch eine andere Frage:
Wenn ich eine Resource Datei nicht in eine DLL, sondern direkt in den Programmquellcode einbinde ({$R bilder.res}) wie kann ich dann auf die Bilder darin zugreifen? Was müsste ich dann für einen Handel verwenden?

Besten Dank
Ares

[edit=SirThornberry]Code-Tags durch Delphi-Tags ersetzt. Mfg, SirThornberry[/edit]

SirThornberry 21. Aug 2006 12:59

Re: BMP und JPG Bilder in Resource-Datei speichern und verwe
 
für das JPEG kannst du dir einen eigenen Typ definieren (bzw. JPG lassen).
Um die Ressource dann in ein TJPEGImage zu laden solltest du die Ressource vorher in einen TResourceStream laden und dann
Delphi-Quellcode:
JPEGImage.LoadFromStream(TheRessourceStream);

fwsp 21. Aug 2006 13:02

Re: BMP und JPG Bilder in Resource-Datei speichern und verwe
 
Code:
1 RCDATA "1.jpg"
für jpg und alle weiteren nicht genormten formate, nimmt man RCDATA.

_frank_ 21. Aug 2006 13:03

Re: BMP und JPG Bilder in Resource-Datei speichern und verwe
 
Zitat:

Zitat von Ares
Code:
var DLLHandle: THandle;

begin
  DLLHandle := LoadLibrary('Bilder_DE.dll');
  TBitmap.LoadFromResourceID(DLLHandle, 1);
end;
Ich habe es nun geschafft auf diese Art und Weise Bitmap Bilder zu verwenden. Aber wie funktioniert das ganze bei JPG Bildern?

Code:
var jpg1:Tjpegimage;
    stream:TResourceStream;
begin
  jpg1 := TJPEGImage.Create;
  try
    Stream := TResourceStream.Create(hinstance, 'jpg1', RT_RCDATA);
    try
      Jpg1.LoadFromStream(Stream);
      Image1.Picture.Bitmap.Assign(jpg1);
    finally
      Stream.Free;
    end;
  finally
    jpg1.Free;
  end;
Zitat:

Zitat von Ares
Ist es überhaupt korrekt, wie ich diese in die Resource-Datei einfüge:

Code:
1 BITMAP "test.bmp"
2 JPG "test.jpg"
Das man Bitmaps mit "BITMAP" einbindet weiß ich, "JPG" habe ich dann einfach mal geraten. Der Compiler hat jedenfalls nicht gemeckert. Ist das korrekt?

imho eigentlich RCData, aber wenn der compiler nicht gemeckert hat... :gruebel:
Zitat:

Zitat von Ares
Und wie kann ich dann auf die JPG Bilder zugriefen. TJPGImage hat keine LoadFromResourceID Methode. Wie kann ich also einem TImage ein JPG Bild aus der Resource Datei zuweisen?

Noch eine andere Frage:
Wenn ich eine Resource Datei nicht in eine DLL, sondern direkt in den Programmquellcode einbinde ({$R bilder.res}) wie kann ich dann auf die Bilder darin zugreifen? Was müsste ich dann für einen Handel verwenden?

siehe mein obiges Beispiel...

weiterhin empfehle ich dir zum erstellen der rc-dateien meinen rfe ( http://rfe.sf.net ), wie man die eine oder andere Resource läd, findest du als resload.zip hier

Gruß Frank

ManuMF 21. Aug 2006 14:20

Re: BMP und JPG Bilder in Resource-Datei speichern und verwe
 
Und das Ganze jetzt noch mal für die DLL: ;-)

Delphi-Quellcode:
var jpg1:Tjpegimage;
    stream:TResourceStream;
begin
  jpg1 := TJPEGImage.Create;
  try
    Stream := TResourceStream.Create(DLLHandle, 'jpg1', RT_RCDATA);
    try
      Jpg1.LoadFromStream(Stream);
      Image1.Picture.Bitmap.Assign(jpg1);
    finally
      Stream.Free;
    end;
  finally
    jpg1.Free;
  end;
P.S.: Warum [Code]? Wir haben doch [Delphi]?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz