Вниз
Скачать: CL | DM;

Вопрос по JPEG из DLL   Найти похожие ветки 

← →
kas86   (2007-10-28 11:57) [0]

Вот например Bitmap file выташить из dll можно вот так
var
 AModule: THandle;
begin
 AModule := LoadLibrary("graphics.dll");
 image1.Picture.BitMap.LoadFromResourceName(AModule, "police");
 FreeLibrary(AModule);

Вопрос: А КАК ВЫТАЩИТЬ из тойже dll JPEG картинку??????


← →
MBo ©   (2007-10-28 12:02) [1]

TJpegImage.LoadFromStreaam + TResourceStream


← →
kas86   (2007-10-28 12:50) [2]

Хорошо, теоретически выглядить должно вроде как так?????

JPG: TJEPEGImage;
RS: TSesourceStream;

begin
JPG:=JPG.Create;
RS:=TResourceStream.Create(hInstance, PChar(copy("graphics.dll", 1, Pos(".", "graphics.dll")-1)), "poljpg"); -- вот тута у меня проблема, не могу додумать программа выдает Reource graphics not found
JpG.LoadFromStreaam(RS);
Image.Picture.Assign.(JPG);

где poljpg - сама картинка Жпег вшитая в длл

Помогите дописать правильно


← →
kas86   (2007-10-28 16:19) [3]

Ура разобрался самостоятельно! Перелопатив кучу форумов и исходников, на которых ничего не работает, втретил такую же кучу людей с такой же проблемой. Так вот :  КАК СОЗДАТЬ DLL-БИБЛИОТЕКУ И ИЗВЛЕЧЬ ИЗ НЕЁ JPEG НЕ РАСПАКОВЫВЫЯ НА ДИСК. (админ, можете добавить в faq)

1. Создаём файл graphics.rc
2. Пишем туда kartinka JPG kartinka.jpg (jpg и rc файлы в одном каталоге)
3. запускаем borland\delphi7\bin\brcc32.exe с параметром graphics.rc
4. Получив graphics.res в делфи создаем DLL Wizard
5. Дописываем после USES, строчку {$R graphics.res} и компилируем.
6. Получив graphics.dll кладем его в папку с разрабатываемой программой и пишем код куда вам надо:

var
RS: TResourceStream;
JPG: TJPEGImage;
AModule: THandle;
begin
AModule:=LoadLibrary("graphics.dll");
RS:=TResourceStream.Create(AModule, "kartinka", "JPEG");
JPG:=TJPEGImage.Create;
JPG.LoadFromStream(RS);
Image1.Picture:=nil;
Image1.Picture.Assign(JPG);
JPG.Free;
RS.Free;

Остаётся только расставить как вам надо try except. С битмапами проще - код расписан выше. Теоретически можно в длл зашить и мета файлы и т.д.
Спасибо MBo за то что указал на правильный путь.


← →
homm ©   (2007-10-28 16:22) [4]

> Image1.Picture:=nil;
> Image1.Picture.Assign(JPG);

Ты уверен, что ЭТО работает?


← →
Dimaxx ©   (2007-10-28 17:04) [5]

Насколько я представляю, должно быть так:

Image1.Picture.Bitmap.Assign(JPG.Bitmap);


← →
antonn ©   (2007-10-28 17:16) [6]

ага, как раз в битмап jpg грузить...


← →
kas86   (2007-10-28 17:54) [7]

ЕЩЁ ОДИН МОМЕНТ

Если в файле graphics.rc мы пишем kartinka JPG kartinka.jpg то и вдальнейшем
когда пишем программный код надо писать

RS:=TResourceStream.Create(AModule, "kartinka", "JPG"); а не JPEG, но у меня и так всё работало, главное чтоб в USES было прописано JPEG


← →
MetalFan ©   (2007-10-30 13:39) [8]


> Ура разобрался самостоятельно!

так тебе же сказали в [1]



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.009 c
2-1237724218
DDR2
2009-03-22 15:16
2009.05.03
Заблокировать Enter


2-1237207108
Дмитрий
2009-03-16 15:38
2009.05.03
CheckListBox с Columns = 2 без Horizontal Scroll


15-1235950633
Real
2009-03-02 02:37
2009.05.03
Русский MSDN


11-1200042094
=BuckLr=
2008-01-11 12:01
2009.05.03
Нашествие спамеров на форум


15-1235778269
Кое кто
2009-02-28 02:44
2009.05.03
Английский в формате Бекуса-Науэра...




   Наверх