powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сохранение JPEG в БД
15 сообщений из 15, страница 1 из 1
Сохранение JPEG в БД
    #32348186
Даник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нигде не могу найти работающего примера по сохранении картинки в БД с последующем извлечением.

Использую MS SQL, пишу на С Builder`е, конекчусь чараз ADO.
У поля в которое я пытаюсь сохранить картинку тип - image.

Это не канает:
Код: plaintext
1.
2.
3.
4.
5.
6.
    TJPEGImage* img = new TJPEGImage;
    img->LoadFromFile(OpenDialog->FileName);

    DM->DSManFoto->DataSet->Edit();
    DM->DSManFoto->DataSet->FieldByName( "фото" )->Assign(img);
    DM->DSManFoto->DataSet->Post();
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32348200
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
воспользуйся поиском

сдесь это уже рас десят пролетало

поиск -> Blob
_____________
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32348271
Даник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lepsik тут писал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
bool save_jpeg( TField *field, TJPEGImage *picture ) 
{ 
assert(field); 
assert(picture); 
TMemoryStream *stream = new TMemoryStream; 
TBlobField *blob = (TBlobField *)field; 
try 
{ 
picture->SaveToStream(stream); 
int sz = stream->Size; 
if( sz > NULL ) 
{ 
stream->Seek( 0 , 0 ); 
blob->LoadFromStream(stream); 
} 
}catch(...){ return false;} 
delete stream; 
return true; 
} 


на blob->LoadFromStream(stream); выскакивает ошибка: "Bitmap image is not valid" ...
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32348422
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--на blob->LoadFromStream(stream); выскакивает ошибка: "Bitmap image is not valid" ...

это пример только для jpeg. Если положил туда bitmap, то и доставать надо только через TBitmap
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32348581
Даник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, в том то и дело что JPEG кладу...
Может тип image в MS SQL не предполагает JPEG?
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32349558
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ему плевать что ты туда пихаешь
хоть вордовский документ
_____________
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32349834
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--на blob->LoadFromStream(stream); выскакивает ошибка: "Bitmap image is not valid" ...


рекордсет должен быт открыть для редактирования.


TJPEGImage* img = new TJPEGImage;
img->LoadFromFile("c:\\a.jpg");

rec->Edt();
save_jpeg( rec->Fields->Fields[0], img ) ;
rec->Post();
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32349871
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или можешь воспользоваться вот этим примером

http://www.bcbdev.ru/codesamples/vcl/loadblobfromfile.htm
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32351572
Даник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 
   TJPEGImage* img = new TJPEGImage;
    img->LoadFromFile(OpenDialog->FileName);

    DM->DSManFoto->DataSet->Edit();
    save_jpeg(DM->DSManFoto->DataSet->FieldByName( "фото" ),img);
    DM->DSManFoto->DataSet->Post();


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 
bool TManFoto::save_jpeg( TField *field, TJPEGImage *picture )
{

    TMemoryStream *stream = new TMemoryStream;
    TBlobField *blob = (TBlobField *)field;

    try
    {
        picture->SaveToStream(stream);
        int sz = stream->Size;
        if( sz > NULL )
        {
            stream->Seek( 0 , 0 );
  -->      blob->LoadFromStream(stream); // Ошибка: exception class EInvalidGraphic with message "bitmap image is not valid"
 

        }
    }
    catch(...){ return false;}

    delete stream;
    return true;
}


Как я понимаю здесь не должно быть ошибки, а?
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32351578
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не должно быть.

так выглядит, что jpeg фильтр не зарегистрирован у тебя ? Что за версия Builder ? С 5-й работает на ура
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32351585
Даник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версия 6-ая. А как регистрировать фильтр JPEG?
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32351745
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
начиная с 4-го jpeg - встроенная компонента и ничего делать не нужно.

jpeg файл в превью OpenPictureDialog виден ?


обычно новые форматы регистрируются примерно так :

TPicture *Picture = new TPicture();

Picture->RegisterFileFormat(__classid(TPNGObject), "png", "Portable Network Graphics", __classid(TPNGObject));

delete Picture;
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32351767
Даник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, что у меня все зарегистрированно, т.к. на TDBImage картинка итображается по Assign(img) и Update.
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32351773
Даник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так даже не канает,
blob->Assign(img);
тоже исключение EInvalidGraphic "image type is not valid"
в справке вот что про это исключение:
-An application attempts to load a file with an unrecognized extension.
-An application attempts to load a file that is not a valid bitmap, icon, metafile, or user-defined graphic type into a picture.
???А почему это сообщение вообще генерируется я ведь TGraphics нигде не использую.
...
Рейтинг: 0 / 0
Сохранение JPEG в БД
    #32351775
Даник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблемма исчезла после того, как я убрал с формы компонент TDBImage, связанный с полем в которое я пытался засунуть JPEG.
Ура!!! товарищи. Спасибо Lepsik.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сохранение JPEG в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]