![]() |
|
|
![]()
|
|
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Если открыть в профессиональном графическом редакторе (например, в CorelPHOTO-PAINT или Adobe Photoshop) фотографию JPG созданную цифровым фотоаппаратом размером 1.5 Мгб и сохранить ее (например, с установками по умолчанию), то получим файл размером 600-800 Кб и он будет хорошего качества. Можно ли средствами C++ Builder (или сторонними компонентами) реализовать сжатие jpg файлов?
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Здрасте, приехали
TJPEGImage::Compess -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Примерно так?:
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Угу
Добавлено @ 16:16 Опс... Не так. Что же Вы делаете? Сначала jpeg в bmp преобразуете, а потом jpeg сжимаете Надо сначала сжать, а потом уж преобразовать
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Понятно.
Что может означать эта ошибка после добавления этих двух строк? В файле jpeg.hpp цифры 41 не нашла. Исключение на строке: bitmap->Assign(jpeg.get()); Это сообщение отредактировал(а) Лена - 21.11.2006, 16:47 Присоединённый файл ( Кол-во скачиваний: 20 )
1.gif 5,60 Kb |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Попробуйте добавить
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Та же ошибка осталась. Не хочет jpg переделываться в bmp. Добавлено @ 17:20 Вот так сработало: jpeg->DIBNeeded(); jpeg->CompressionQuality = 80; или даже так: jpeg->CompressionQuality = 10; //все равно 9 МгБ jpeg->Compress(); Однако я сделала сохранение на диск для проверки. В результате получила размер фотографии 9 Мгб, исходная была 1.8 Мгб. Это сообщение отредактировал(а) Лена - 21.11.2006, 17:28 |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
В качестве эксперимента сделала черно-белую:
Получила 3МгБ. Очевидно не удасться записывать в базу зажатые jpg потому что они разжимаются когда превращаются в битмап. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Скорее всего так и есть. Есть выход - хранить все в формате JPEG. Только сохранять и доставать придется ручками
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
||||
|
||||
| Vyacheslav |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
В БД можно записать все что угодно
Примерный план следующий 1. Yбрать TGraphicField, вместо него установить TBlobField 2. Изменить код
3. Заменить DBImage на Image 4. Вычитывать картинку из БД примерно так
-------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Cпасибо попробую переделать. Согласно последней вводной, нужна поддрежка только JPG (bmp не будет).
|
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Ошибка тут:
DataModule2->ADOQueryPhoto->Parameters->ParamByName("img")->SaveToStream(stream.get()); [C++ Error] MDataBase.cpp(1124): E2316 'SaveToStream' is not a member of 'TParameter' |
|||
|
||||
| Vyacheslav |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Ну естественно. Надеюсь Вы уже исправли
И насчет ADOQueryPhoto не уверен. Вы уж поставте тот, у которого запрос в select photo from photos where id = :id. ADOQueryX кажется ? -------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Я пробывала оба варианта. Если так:
то тоже ошибка: [C++ Error] MDataBase.cpp(1127): E2316 'SaveToStream' is not a member of 'TField' |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |