Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.03;
Скачать: 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 вся ветка

Текущий архив: 2009.05.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
2-1237261817
Drowsy
2009-03-17 06:50
2009.05.03
Update Failed


15-1236073702
Юрий
2009-03-03 12:48
2009.05.03
С днем рождения ! 29 февраля 2009


2-1237455998
AlexeyMK
2009-03-19 12:46
2009.05.03
Чужое окно сделать дочерним MDI


2-1237905631
Magedon
2009-03-24 17:40
2009.05.03
Typecasting


15-1236051772
MBo
2009-03-03 06:42
2009.05.03
Конструктор массива