- - * - WhiteUnicorn - * - -




* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >


Frequently Asked Questions

Using JPEGs from resource files

Question:

How can I load a JPEG image from a resource file that is linked with my application?

Answer:

The following demonstrates creating a resource file containing a

JPEG image, and loading the JPEG file from the resource file. The

resulting JPEG image is displayed in a Image component.



1) Create a text file with the extension of ".rc". The text file

should be named something different than the project name or any unit

name in your application to avoid any confusion for the compiler. The

text file should contain the following line:



MYJPEG JPEG C:\DownLoad\MY.JPG



Where:

"MYJPEG" is the name you wish to name the resource

"JPEG" is the user defined resource type.

"C:\DownLoad\MY.JPG" is the path and filename of the JPEG file.



For our example we will name the file "foo.rc" .



Now run the BRCC32.exe (Borland Resource CommandLine Compiler) program

found in the Delphi/C++ Builders bin directory giving the full path to

the rc file:



C:\DelphiPath\BIN\BRCC32.EXE  C:\ProjectPath\FOO.RC



You should now have a compiled resource file named the same as the

".rc" file you compiled with the extension of ".res".



The following demonstrates using the embedded JPEG in your application



{Link the res file}

{$R FOO.RES}



uses Jpeg;



procedure LoadJPEGFromRes(TheJPEG : string;

                          ThePicture : TPicture);

var

  ResHandle : THandle;

  MemHandle : THandle;

  MemStream : TMemoryStream;

  ResPtr    : PByte;

  ResSize   : Longint;

  JPEGImage : TJPEGImage;

begin

  ResHandle := FindResource(hInstance, PChar(TheJPEG), 'JPEG');

  MemHandle := LoadResource(hInstance, ResHandle);

  ResPtr    := LockResource(MemHandle);

  MemStream := TMemoryStream.Create;

  JPEGImage := TJPEGImage.Create;

  ResSize := SizeOfResource(hInstance, ResHandle);

  MemStream.SetSize(ResSize);

  MemStream.Write(ResPtr^, ResSize);

  FreeResource(MemHandle);

  MemStream.Seek(0, 0);

  JPEGImage.LoadFromStream(MemStream);

  ThePicture.Assign(JPEGImage);

  JPEGImage.Free;

  MemStream.Free;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

  LoadJPEGFromRes('MYJPEG', Image1.Picture);

end;






* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >



- - * - Anastasija aka WhiteUnicorn - * - - LJLiveJournal
PFPhotoFile