这是我将图像保存到数据库并检索它的问题的最后一点。我现在要做的是使用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