加载图像文件并保存到数据库

时间:2017-04-21 18:34:33

标签: c++ blob c++builder

这是我将图像保存到数据库并检索它的问题的最后一点。我现在要做的是使用TWICImage使它成为通用的(在它是ico文件之前它起作用)。我可以保存并加载它,但在保存到数据库时出现异常。

  

无法将类型(数组字节)的变体转换为类型(整数)

如果我点击确定,一切都和往常一样。它被保存并加载和显示就好了。我必须做错的事,但无法弄明白。

以下是从文件代码段加载:

if (dlgOpenPictureFile->Execute())
{
  TWICImage *Image = new TWICImage();

  Image->LoadFromFile(dlgOpenPictureFile->FileName);

  imgLogo->Picture = NULL;
  imgLogo->Picture->Assign(Image);

  if (dscMain->DataSet->State == dsBrowse)
  {
    dscMain->Edit();
  }

  TStream *StreamLogo = NULL;

  try
  {
    StreamLogo = dscMain->DataSet->CreateBlobStream(dscMain->DataSet->FieldByName("Image"), bmWrite);
    imgLogo->Picture->Graphic->SaveToStream(StreamLogo);
  }
  __finally
  {
    //at the time of delete it writes to the underlying buffer
    delete StreamLogo;
    delete Image;
  }
}

dscMain是我们稍后发布的数据源。 Image属于数据库中的varbinary类型。

非常感谢对此问题的任何见解。

修改 经过一些测试后,看起来这只发生在.png和.gif文件中。

IDE:Rad Studio Berlin

操作系统:Windows 10

0 个答案:

没有答案