![]() |
|
|
![]()
|
|
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Как PNG-картинку выгрузить из BLOB-поля в TImage?
(С++Builder 2009, ADO, Access) Это сообщение отредактировал(а) Alca - 17.2.2009, 21:44 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
С JPeg я поступал так:
Соответственно в TImage уже при помощи свойства Picture->Assign Думаю с PNG также примерно |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Alca, тебе именно в TImage?
Можно же заюзать TDBImage указав в нем ссылку на blob-поле. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Че та не получается. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
А есть код как она туда запихивается?
|
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
С TImage я сделал через стримы вставлял как болб, юэал класс TPngImage (код дома, вечером выложу).
Хотелось бы через DBGrid.
C DBGrid нет. Это сообщение отредактировал(а) Alca - 18.2.2009, 10:46 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Хотя возможно DBImage не может нормально работать с png
|
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Короче так всталяю (проверил в мдбшнике данные есть):
DBGrid ругаеться:
Это сообщение отредактировал(а) Alca - 18.2.2009, 11:22 |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Так конечно он будет ругаться. Вы же в BLOB файл запихиваете целиком вместе с заголовком и т.п. Если бы вы сначала из файла считывали в Timage, а затем из него в BLOB тогда подошел бы мой метод. Один из вариантов - выпихиваете из BLOB во временный файл, а из него загружаете в Timage. Несколько громоздко, но работать будет. Это сообщение отредактировал(а) Anikmar - 18.2.2009, 11:47 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
А что без TImage никак не обойтись? И без временных файлов?
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Так вроде изначально спрашивали как запихать в TImage? Как без него обойтись? Мое предлложение: Для записи картинки из файла в БД: Выбрали картинку в диалоге. Запихали ее в Timage. Затем из TIMage запихали через поток в BLOB. При отображении - наоборот - в поток из BLOB, из потока - в TImage. Тогда никаких временных файлов нет. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Вставляю через буфер обмена пнгешку:
Все чудно получаеться! Т.е. DBImage1 нормально работает. Значит надо правильно вставлять через стримы.... Это сообщение отредактировал(а) Alca - 18.2.2009, 12:24 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Вот рабочий код с DBImage (без временных файлов и TImage - ей):
Будут какие-либо замечания, критика? Это сообщение отредактировал(а) Alca - 18.2.2009, 13:31 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
может кто-то нашел способ по-лучше, например, через стримы (всеж красивше)
отображается Это сообщение отредактировал(а) Alca - 18.2.2009, 15:13 |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Есть замечания. Все то хорошо, но есть одно но. PNG-шная картинка вставляется в базу как BMP-шная.
Каритка test.PNG: - реальный вес составляет 135 КБ; - вес mdb-шника до вставки 220 КБ; - вес mdb-шника после вставки 4088 КБ; Так что код:
ничем не отличается от того так как если бы вставлялся BMP-файл. Т.е. идет преобразование PNG в BMP, что не есть гуд. Вопрос актуален. Здается мне, что DBImage не умеет курить PNG как он есть (Bitmap image is not valid.). Не умеет отображать PNG файлы. Это сообщение отредактировал(а) Alca - 18.2.2009, 17:36 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Тогда попробуйте моим методом через потоки - не пользуя DBImage (Ну не люблю я этот контрол, что поделаешь!). По-моему должно получится - я всегда с JPEG работал, вроде реальный размер картинок в базу пихает (в смысле реально JPEG, а не BMP). C PNG также должно быть по идее...
|
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Буду пробывать. Но что-то меня мучают мутные сомнения.
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Как я и предполагал, DBImage не любит png-формат.
По этому могу предложить такой - достаточно простой - вариант - основанный на работе с полями таблицы на прямую. Для эксперимента использовал ADOConnection, ADOTable, DataSourse, DBImagе, DBGrid, OpenDialog с фильтром на *.png Сама БД имеет всего два поля - id(счетчик) и img(blob-поле) После подключения к БД - генерим поля таблицы - двойной клик по ADOTable - правый клик мышью - Add all fields. Появятся два объекта - ADOTableid и ADOTableimg DBImagе настраивать просто - DataSource - наш DataSourse, DataField - img Вот сам код вставки картинки
Все нормально сохраняется и просматривается. Собственно это можно сделать и с ADOQuery - только по умолчанию надо прописать в свойстве SQL "SELECT * FROM testtable" - поля будут генериться. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Я так уже делал. Картинка просматривается, но дело в том, что png-шка пинается в базу как bmp. BMP весит на много больше чем PNG. Посмотри размер Mdb-шника до и после вставки. |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
??? Если ты это имел ввиду, то смысл? |
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Alca, неа. я про использование классов TZCommpressionStream/TZDecommpressionStream (из zlib.hpp - в Бормане 2009 включена)- достаточно бодрая и шустрая вещь
|
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Ок гляну.
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Осталось простенький примерчик нарыть.
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Намек понятен - вот зацени - если понравится запакую проект Присоединённый файл ( Кол-во скачиваний: 24 )
arch.rar 294,54 Kb |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Заценил
Это сообщение отредактировал(а) Alca - 19.2.2009, 14:55 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Спасибо.
|
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Всем добрый! Новый топ не создавал, так как тема схожа!
Пытаюсь загрузить в BLOB поле БД MySQL картинку размером около 2 Мб. Оговорюсь, что с мелкими файлами, а ля 300Кб, все работает нормально, но при двух мегабайтах выдает сл. окно ошибки: ![]() Картинку прогружаю так:
В базе я использую MEDIUMBLOB, размер этого поля хватает за глаза! -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
10054 - Удаленный хост принудительно разорвал существующее подключение.
|
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Спс, это я понял. Но как это исправить, вот в чем вопрос -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
||||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Спасибо, попробую. У меня было такое подозрение, что это отфутболивает сам сервер, искал настройки, но с первого раза не нашел.
-------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| Lapachuka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 10.5.2011 Репутация: нет Всего: нет |
Парни, помогите мне почалуййста! Не могу вставить картинку в поле blob. У меня rad studio 2010 xe, mysql, mydac... Вот код:
AnsiString sql; sql = "INSERT INTO testtable ('Photo') "; sql += "VALUES (:file)"; MyQuery1->Close(); MyQuery1->SQL->Clear(); MyQuery1->SQL->Add(sql); TMemoryStream* st = new TMemoryStream; Image1->Picture->Graphic->SaveToStream(st); MyQuery1->Params->ParamByName("file")->LoadFromStream(st, ftBlob); MyQuery1->Execute(); ошыбка которою мне показывает: http://s2.ipicture.ru/uploads/20110510/jq3Sk4WE.jpg ![]() <img src="http://s2.ipicture.ru/uploads/20110510/jq3Sk4WE.jpg" border="0"> 3 дня борюсь . Помогите пожалуйста! Присоединённый файл ( Кол-во скачиваний: 5 )
Error.JPG 22,87 Kb |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
Добавлено @ 12:22 http://www.spravkaweb.ru/mysql/sql/insert Это сообщение отредактировал(а) Alca - 10.5.2011, 13:19 |
|||
|
||||
| Lapachuka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 10.5.2011 Репутация: нет Всего: нет |
Alca, Спасибо большое ! |
|||
|
||||
![]()
|
| Правила форума "С++ 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. |