Как поместить JPEG-картинку в exe-файл и потом загрузить ее?
Материал из DRKB
Как поместить JPEG-картинку в exe-файл и потом загрузить ее?[править | править код]
1)Создайте текстовый файл с расширением ".rc".Имя этого файла должно отличаться от имени файла - проекта или любого модуля проекта. Файл должен содержать строку вроде:
MYJPEG JPEG C:\DownLoad\MY.JPG
- "MYJPEG" имя ресурса
- "JPEG" пользовательский тип ресурса
- "C:\DownLoad\MY.JPG" путь к JPEG файлу.
Пусть например rc - файл называется "foo.rc"
Запустите BRCC32.exe(Borland Resource CommandLine Compiler) - программа находится в каталоге Bin Delphi / C + +Builder'а - передав ей в качестве параметра полный путь к rc - файлу. В нашем примере:
C:\DelphiPath\BIN\BRCC32.EXE C:\ProjectPath\FOO.RC
Вы получите откомпилированный ресурс - файл с расширением ".res". (в нашем случает foo.res). Далее добавьте ресурс к своему приложению.
{ Грузим ресурс }
{$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;
ID: 02159