Загрузка картинки из базы данных в TImage
TPicture* photo = new TPicture();
photo->LoadFromFile(OpenPicture->FileName);
Image->Picture = (TPicture*)photo;
}
2. На нажатие кнопки Save, сохраняю картинку в базе данных MS Access.
((TBlobField*)Data->PersonsSet->FieldByName("Photo"))->LoadFromFile(OpenPicture->FileName);
}
3. Теперь, на создание формы я хочу получить картинку из базы данных в TImage. Только вот тут появляются проблемы
Вылетает ошибка Read of address 0000000. Если попробовать сделать каким-то другим способом, тоже ошибки.
Проблем не будет если использовать какойто один формат, но картинки могут быть jpg, png, bmp
photo->Assign(Data->PersonsSet->FieldByName("Photo"));
Летит exception Bitmap image is not valid.
Проблем не будет если использовать какойто один формат, но картинки могут быть jpg, png, bmp
Храни в базе в отдельном поле информацию о формате картинке, и при загрузке выбирай алгоритм, соответствующий формату.
Проблем не будет если использовать какойто один формат, но картинки могут быть jpg, png, bmp
Доброе время суток!
У меня только JPG (Borland C++ 6 + Access) - можно уточнить - как все-таки прочитать JPG?
Спасибо!
У меня только JPG (Borland C++ 6 + Access) - можно уточнить - как все-таки прочитать JPG?
Спасибо!
TJPEGImage
Я пытаюсь сделать
TJPEGImage *examp = new TJPEGImage;
examp->LoadFromStream((TStream*)((TBlobField*)ADOTablePict->FieldByName("Title")));
и получаю "... EAccessViolation with message 'Access violation with address 40030809 in module 'rtl60.bpl'
Или нужно делать последовательное преобразование типов?
TJPEGImage *examp = new TJPEGImage;
((TBlobField*)ADOTablePi ct->FieldByName("Title"))->SaveToSream(stm);
stm->Seek(0, 0);
examp->LoadFromStream(stm);
delete stm;
TJPEGImage *examp = new TJPEGImage;
((TBlobField*)ADOTablePi ct->FieldByName("Title"))->SaveToSream(stm);
stm->Seek(0, 0);
examp->LoadFromStream(stm);
delete stm;
Спасибо... Мне тоже так хотелось... но не получилось... поскольку SaveToSream() не есть метод TBlobField...
Но вот так - получилось
TBlobField* pFieldr = (TBlobField*)ADOTablePict->FieldByName("Title");
TADOBlobStream* pmemr = new TADOBlobStream(pFieldr, bmRead);
pmemr->Seek(0, soFromBeginning);
examp->LoadFromStream(pmemr);