Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PNG-картинку выгрузить из BLOB-поля в TImage 
:(
    Опции темы
Alca
Дата 17.2.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Как PNG-картинку выгрузить из BLOB-поля в TImage?
(С++Builder 2009, ADO, Access)

Это сообщение отредактировал(а) Alca - 17.2.2009, 21:44


--------------------
PM WWW ICQ Skype Jabber   Вверх
Anikmar
Дата 18.2.2009, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



С JPeg я поступал так:
Код

bool TMAN_ADOVrec::LoadGraphic(TADOQuery * pQ, TJPEGImage * pPic, AnsiString pField)
{
    bool Ret = true;
    TBlobField *pBf;
    TMemoryStream *pMS;

    pBf = (TBlobField*)pQ->FieldByName(pField);    // Выдираю необходимое поле
    if (!pBf->IsNull)
    {
        pMS = new TMemoryStream;
        try
        {
            pBf->SaveToStream(pMS);
            pMS->Position = 0;    
            pPic->LoadFromStream(pMS);
        }
        __finally
        {
            delete pMS;
        }
    }

    return Ret;
}

Соответственно в TImage уже при помощи свойства Picture->Assign
Думаю с PNG также примерно

PM MAIL ICQ   Вверх
mrbrooks
Дата 18.2.2009, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Alca, тебе именно в TImage? 
Можно же заюзать TDBImage указав в нем ссылку на blob-поле. 
PM MAIL   Вверх
Alca
Дата 18.2.2009, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

Alca, тебе именно в TImage? 
Можно же заюзать TDBImage указав в нем ссылку на blob-поле. 

Че та не получается.


--------------------
PM WWW ICQ Skype Jabber   Вверх
Anikmar
Дата 18.2.2009, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



 А есть код как она туда запихивается?
PM MAIL ICQ   Вверх
Alca
Дата 18.2.2009, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



С TImage я сделал через стримы вставлял как болб, юэал класс TPngImage (код дома, вечером выложу).
Хотелось бы через DBGrid.
Цитата

А есть код как она туда запихивается?

C DBGrid нет.

Это сообщение отредактировал(а) Alca - 18.2.2009, 10:46


--------------------
PM WWW ICQ Skype Jabber   Вверх
mrbrooks
Дата 18.2.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Alca, 
Цитата(Alca @  18.2.2009,  10:34 Найти цитируемый пост)
Че та не получается. 

Жаль. В MySQL этот подход катит.
PM MAIL   Вверх
Anikmar
Дата 18.2.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Alca @  18.2.2009,  10:46 Найти цитируемый пост)
C DBGrid нет.


А с чем есть? Аналогию не провести?
PM MAIL ICQ   Вверх
mrbrooks
Дата 18.2.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Хотя возможно DBImage не может нормально работать с png
PM MAIL   Вверх
Alca
Дата 18.2.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Короче так всталяю (проверил в мдбшнике данные есть):
Код

//---------------------------------------------------------------------------
void __fastcall TdmMain::vAddImage(TImage *pImg, TADOQuery* pADOQuery) {
    if (!frmMain->OpenPictureDialog1->Execute()) {
        pADOQuery->Cancel();
        return;
    }

    //-------------------------------------
    //файл в поток
    pMemoryStream->Clear();
    pMemoryStream->LoadFromFile(frmMain->OpenPictureDialog1->FileName);

    //-------------------------------------
    //сохраняем в БД
    AnsiString asSqlStr = "INSERT INTO TN_XXXDb (FN_PHOTO)  VALUES  (:param_photo);";
    pADOQuery->SQL->Text = asSqlStr;
    pADOQuery->Parameters->ParamByName("param_photo")->LoadFromStream(pMemoryStream, ftGraphic/*ftBlob*/);

    pADOQuery->ExecSQL();
}
//---------------------------------------------------------------------------

DBGrid ругаеться:
Код

Bitmap image is not valid.


Это сообщение отредактировал(а) Alca - 18.2.2009, 11:22


--------------------
PM WWW ICQ Skype Jabber   Вверх
Anikmar
Дата 18.2.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Alca @  18.2.2009,  11:13 Найти цитируемый пост)
DBGrid ругаеться:

Так конечно он будет ругаться. Вы же в BLOB файл запихиваете целиком вместе с заголовком и т.п.
Если бы вы сначала из файла считывали в Timage, а затем из него в BLOB тогда подошел бы мой метод.

Один из вариантов - выпихиваете из BLOB во временный файл, а из него загружаете в Timage.

Несколько громоздко, но работать будет.

Это сообщение отредактировал(а) Anikmar - 18.2.2009, 11:47
PM MAIL ICQ   Вверх
Alca
Дата 18.2.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



А что без TImage никак не обойтись? И без временных файлов?


--------------------
PM WWW ICQ Skype Jabber   Вверх
Anikmar
Дата 18.2.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Alca @  18.2.2009,  11:52 Найти цитируемый пост)
А что без TImage никак не обойтись? И без временных файлов? 


Так вроде изначально спрашивали как запихать в TImage? Как без него обойтись?

Мое предлложение:
Для записи картинки из файла в БД:
Выбрали картинку в диалоге. Запихали ее в Timage. Затем из TIMage запихали через поток в BLOB.

При отображении - наоборот - в поток из BLOB, из потока - в TImage. Тогда никаких временных файлов нет.
PM MAIL ICQ   Вверх
Alca
Дата 18.2.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Вставляю через буфер обмена пнгешку:
Код

DBImage1->PasteFromClipboard();

Все чудно получаеться! Т.е. DBImage1 нормально работает.
Значит надо правильно вставлять через стримы....

Это сообщение отредактировал(а) Alca - 18.2.2009, 12:24


--------------------
PM WWW ICQ Skype Jabber   Вверх
Anikmar
Дата 18.2.2009, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Alca @  18.2.2009,  12:22 Найти цитируемый пост)
Все чудно получаеться! Т.е. DBImage1 нормально работает.
Значит надо правильно вставлять через стримы....


Совершенно не факт. 

Из буфера обмена картинка переносится уже в универсальном формате как битовый образ.

PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.