Конференция "Media" » Вопрос по JPEG из DLL
 
  • kas86 (28.10.07 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 © (28.10.07 12:02) [1]
    TJpegImage.LoadFromStreaam + TResourceStream
  • kas86 (28.10.07 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 (28.10.07 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 © (28.10.07 16:22) [4]
    > Image1.Picture:=nil;
    > Image1.Picture.Assign(JPG);

    Ты уверен, что ЭТО работает?
  • Dimaxx © (28.10.07 17:04) [5]
    Насколько я представляю, должно быть так:

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

  • antonn © (28.10.07 17:16) [6]
    ага, как раз в битмап jpg грузить...
  • kas86 (28.10.07 17:54) [7]
    ЕЩЁ ОДИН МОМЕНТ

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

    RS:=TResourceStream.Create(AModule, 'kartinka', 'JPG'); а не JPEG, но у меня и так всё работало, главное чтоб в USES было прописано JPEG
  • MetalFan © (30.10.07 13:39) [8]

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

    так тебе же сказали в [1]
 
Конференция "Media" » Вопрос по JPEG из DLL
Есть новые Нет новых   [134431   +10][b:0][p:0.001]