Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.115.120] |
|
Сообщ.
#1
,
|
|
|
Подскажите, пожалуйста, как в класс TBitmap (Borland VCL) загнать картинку из JPEG-файла ?
(Borland C++ Builder 3.0) |
Сообщ.
#2
,
|
|
|
Не уверен, будет ли это работать в третьем. К сожалению проверить не могу, но в 5-ом я делал так:
Цитата #include <jpeg.hpp> //... TJPEGImage *jp = new TJPEGImage(); try { jp->Assign(Image1->Picture->Bitmap); jp->SaveToFile(fname); } __finally { delete jp; } //... |
Сообщ.
#3
,
|
|
|
<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 - может и пройдет. |
Сообщ.
#4
,
|
|
|
К 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 не представляется возможным. |
Сообщ.
#5
,
|
|
|
Может быть этот линк тебе поможет...
http://www.bytamin-c.com/Howto/TJPEG.htm |
Сообщ.
#6
,
|
|
|
Spirt ! Спасибо ! Похоже это то, что мне надо.
Я скачал предлагаемый архив, содержащий компонент TJPEGImage для Builder 3.0. ЗдОрово! Но возникла маленькая загвоздка с инсталляцией этого компонента. Наверное я слишком тупой, но если ты понимаешь, что значит 1. cd jpeg/src, make -DDELPHI 2. cd jpeg/package, make -f jpegpkg.bpk будь добр, поясни, пожалуйста, поподробнее, что нужно сделать. Я работаю под WIN2000. Никакого DOS-а или его эмуляции. Есть, конечно Пуск->Выполнить, но в этой командной строке эти команды не катят, или я чего-то не так делаю. :-/ |
Сообщ.
#7
,
|
|
|
-Распаковываешь весь архив.
-В командере любом заходишь в папку \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 и дважды Ок. Вроде все, удачи |
Сообщ.
#8
,
|
|
|
Вот спасибо ! Буду пробовать. Просто мне все эти командеры нафиг не нужны были, и у меня, по правде сказать, ни одного сейчас не установлено. Ну да найду какой-нибудь.
|
Сообщ.
#9
,
|
|
|
Spirt ! Ты мне такую толковую инструкцию написАл, но чего-то не распаковывается у меня ничего.
Я себе FarManager установил, в директорию \jpeg\src скопировал make.exe из \Builder\Bin. Находясь в директории \jpeg\src, набираю make -DDELPHI (make.exe -DDELPHI тоже пробовал). Ничего не происходит, ни ошибок никаких не выдаёт, ни варнингов. Только создаются директории Lib и Obj, но пустые. |
Сообщ.
#10
,
|
|
|
Вот, выложил для тебя все три файлика. http://spirtoff.tripod.com/cpp/cpp.html
Ежели чего, мое мыло в профиле. |
Сообщ.
#11
,
|
|
|
Спасибо за файлики, скачал, распихал куда нужно.
Но при попытке подключить к проекту Component->Install Packages->Add выдаёт сообщение, что не находит ещё одну *.bpl, а именно Библиотека DLL rtl60.bpl по указанному пути не найдена... и дальше все эти пути, где она могла бы быть. Но у меня её на компе вообще нигде нет. |
Сообщ.
#12
,
|
|
|
Знаю, откель эта длл-ка взялась. Компилил-то я под шестым... Ладненько, чего-нить придумаю. Ты, кстати, зарегился бы что ли...
ЗЫ Киря, топик пока во флейм не переноси, ок? |
Сообщ.
#13
,
|
|
|
Spirt ! Я зарегился. На счёт DLL-ки... Если можешь это скомпилить под 5-м Builder-ом, то у меня он на другом компе есть и проблем со всякими bpl прочими файликами уже не будет (надеюсь). Но я попробую ещё разок сам всё скомпилить, если у меня самого получится, я тебе сразу скажу, чтоб ты больше не мучился.. Кстати, какой командер используешь ?
|
Сообщ.
#14
,
|
|
|
Цитата 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 *) {} - просто не пользовался бы ей. |
Сообщ.
#15
,
|
|
|
Spirt и Adil !
Спасибо за советы ! Правда, в итоге, самым простым для меня оказался способ с использованием класса CxImage, исходники которого свободно распространяются. У меня всё получилось. Кстати, если бы я знал, что в Builder-е 5.0 чтение JPEG не представляет проблем, то, конечно, обозначил бы тему как "чтение JPEG в Builder-е 3.0" ;) |