На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> чтение JPEG в Builder-е
    Подскажите, пожалуйста, как в класс TBitmap (Borland VCL) загнать картинку из JPEG-файла ?
    (Borland C++ Builder 3.0)
      Не уверен, будет ли это работать в третьем. К сожалению проверить не могу, но в 5-ом я делал так:
      Цитата

      #include <jpeg.hpp>
      //...
      TJPEGImage *jp = new TJPEGImage();
               try
               {
                 jp->Assign(Image1->Picture->Bitmap);
                 jp->SaveToFile(fname);
               }
               __finally
               {
                 delete jp;
               }
      //...
        ExpandedWrap disabled
          <br>  TJPEGImage *ggg=new TJPEGImage;<br>  ggg->LoadFromFile("picture.jpg");<br>  Bitmap->Assign(ggg);//Graphics::TBitmap *Bitmap=new Graphics::TBitmap; - где раньше<br>  delete ggg;<br>

        Но это в 5-ом, хотя можно попробовать положить jpeg.obj - в LIB, а jpeg.hpp - в INCLUDE - может и пройдет.
          К Builder-у 3.0 подключил файлы <jpeg.hpp> и <jpeg.obj> из 5-го Builder-а.
          На выражение

          TJPEGImage *ggg=new TJPEGImage;

          компилятор выдаёт следующие сообщения об ошибках.

          [C++Error] geometry.cpp(1836): Cannot create instance of abstract сlass 'Jpeg::TJPEGImage'.
          [C++Error] geometry.cpp(1836): Class 'Jpeg::TJPEGImage' is abstract because of '_fastcall Graphics::TGraphic::LoadFromClipboardFormat(unsigned short,int,void *) = 0'.

          Что ещё можно сделать в данной ситуации ?
          Проект должен компилиться именно в 3-ей версии Builder-а, перенести в 5-ый Builder не представляется возможным.

            Может быть этот линк тебе поможет...
            http://www.bytamin-c.com/Howto/TJPEG.htm
              Spirt ! Спасибо ! Похоже это то, что мне надо.
              Я скачал предлагаемый архив, содержащий компонент TJPEGImage для Builder 3.0.
              ЗдОрово! Но возникла маленькая загвоздка с инсталляцией этого компонента.
              Наверное я слишком тупой, но если ты понимаешь, что значит

              1. cd jpeg/src, make -DDELPHI
              2. cd jpeg/package, make -f jpegpkg.bpk

              будь добр, поясни, пожалуйста, поподробнее, что нужно сделать.
              Я работаю под WIN2000. Никакого DOS-а или его эмуляции.
              Есть, конечно Пуск->Выполнить, но в этой командной строке эти команды не катят,
              или я чего-то не так делаю.

              :-/
                -Распаковываешь весь архив.
                -В командере любом заходишь в папку \jpeg\src, копируешь в нее же файл make.exe из директории Билдер\Bin.
                -Пишешь в командной строке make.exe -DDELPHI. На выводимые warnings внимания не обращаешь.
                -Заходишь в папку \jpeg\package, запускаешь файл jpegpkg.bpk.
                -В открывшемся окошке Билдера нажимаешь кнопку Сompile.
                -Дальше начинаются непонятки. На странице пишут, что надо скопировать файлы jpegpkg.lib and jpegpkg.bpi в директорию Билдер\lib, а файл jpegpkg.bpl в папку Билдер\bin. Реальный же расклад получился такой: первые два файлика уже находились там, где им и положено быть, а третий Билдер\Projects\Bpl. Компиляй, потом поискай, куда их тебе распихало и, если надо, внеси коррективы.
                -Закрываешь в Билдере все окошки, на вопрос о том, надо ли сохранять изменения соглашайся.
                -В Билдере меню Component->Install Packages.
                -Щелкаешь Add, указываешь файлик jpegpkg.bpl, который в Билдер\Bin и дважды Ок.
                Вроде все, удачи :)
                  Вот спасибо ! Буду пробовать. Просто мне все эти командеры нафиг не нужны были, и у меня, по правде сказать, ни одного сейчас не установлено. Ну да найду какой-нибудь.
                    Spirt ! Ты мне такую толковую инструкцию написАл, но чего-то не распаковывается у меня ничего.
                    Я себе FarManager установил, в директорию \jpeg\src скопировал make.exe из \Builder\Bin.
                    Находясь в директории \jpeg\src, набираю make -DDELPHI (make.exe -DDELPHI тоже пробовал).
                    Ничего не происходит, ни ошибок никаких не выдаёт, ни варнингов. Только создаются директории Lib и Obj, но пустые.
                      Вот, выложил для тебя все три файлика. http://spirtoff.tripod.com/cpp/cpp.html
                      Ежели чего, мое мыло в профиле.
                        Спасибо за файлики, скачал, распихал куда нужно.
                        Но при попытке подключить к проекту Component->Install Packages->Add
                        выдаёт сообщение, что не находит ещё одну *.bpl,
                        а именно

                        Библиотека DLL rtl60.bpl по указанному пути не найдена...

                        и дальше все эти пути, где она могла бы быть. Но у меня её на компе вообще нигде нет.
                          Знаю, откель эта длл-ка взялась. Компилил-то я под шестым... Ладненько, чего-нить придумаю. Ты, кстати, зарегился бы что ли...
                          ЗЫ Киря, топик пока во флейм не переноси, ок?
                            Spirt ! Я зарегился. На счёт DLL-ки... Если можешь это скомпилить под 5-м Builder-ом, то у меня он на другом компе есть и проблем со всякими bpl прочими файликами уже не будет (надеюсь). Но я попробую ещё разок сам всё скомпилить, если у меня самого получится, я тебе сразу скажу, чтоб ты больше не мучился.. Кстати, какой командер используешь ?
                              Цитата SashaTis, 15.07.02, 17:26:19
                              К Builder-у 3.0 подключил файлы <jpeg.hpp> и <jpeg.obj> из 5-го Builder-а.
                              На выражение

                              TJPEGImage *ggg=new TJPEGImage;

                              компилятор выдаёт следующие сообщения об ошибках.

                              [C++Error] geometry.cpp(1836): Cannot create instance of abstract сlass 'Jpeg::TJPEGImage'.
                              [C++Error] geometry.cpp(1836): Class 'Jpeg::TJPEGImage' is abstract because of '_fastcall Graphics::TGraphic::LoadFromClipboardFormat(unsigned short,int,void *) = 0'.

                              Что ещё можно сделать в данной ситуации ?
                              Проект должен компилиться именно в 3-ей версии Builder-а, перенести в 5-ый Builder не представляется возможным.



                              Ну и написал бы в jpeg.h
                              void _fastcall LoadFromClipboardFormat(unsigned short,int,void *) {} - просто не пользовался бы ей.
                                Spirt и Adil !
                                Спасибо за советы ! Правда, в итоге, самым простым для меня оказался способ с использованием класса CxImage, исходники которого свободно распространяются.
                                У меня всё получилось.
                                Кстати, если бы я знал, что в Builder-е 5.0 чтение JPEG не представляет проблем, то, конечно, обозначил бы тему как "чтение JPEG в Builder-е 3.0"  ;)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0310 ]   [ 16 queries used ]   [ Generated: 7.05.24, 05:38 GMT ]