Для smartsoft "InterBase BLOB JPG"
DBImage1->Picture->RegisterFileFormat(__classid(TJPEGImage), "jpg", "jpg", __classid(TJPEGImage));
Далее:
void __fastcall TForm1::DBImage1Click(TObject *Sender)
{
if (OpenPictureDialog1->Execute())
DBImage1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
}
После выбора рисунка, пытаюсь зафиксировать запись в базе. JPG после последней операции просто исчезает. С BMP теже действия проходят нормально.
Теперь, пусть TDBImage на подключение модулей вроде JPEG кладет, использую TImage:
AnsiString FileName;
//----------------------------------------------
void __fastcall TForm3::DBImage1Click(TObject *Sender)
{
if (OpenPictureDialog1->Execute())
{
Image1->Picture->LoadFromFile
(FileName=OpenPictureDialog1->FileName);
}
}
//----------------------------------------------
void __fastcall TForm1::ANewWorkerExecute(TObject *Sender)
{
TBlobField *bf=dynamic_cast <TBlobField *> (IBDataSet1->FieldByName("Photo"));
IBDataSet1->Append();
if (Form3->ShowModal()==mrOk)
{
bf->LoadFromFile(FileName);
IBDataSet1->ApplyUpdates();
}
else
IBDataSet1->CancelUpdates();
}
И в этом случае BMP записывается, а на JPG генерится исключение.
Подскажите чайнику как правильно загрузить картинку ручками. :devil: