求救,高手请进来看看啊

wyy99 2003-04-13 11:47:51
bcb 中用TDBImage控件只能显示数据库中bmp图像格式,怎么样才能显示jepg图像啊

请各位bcb 高手帮忙啊,谢谢了。

想交些编程的朋友,我的QQ:107642122
...全文
43 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xpyilin 2003-04-14
  • 打赏
  • 举报
回复
图象数据在ORACLE中保存的类型为BLOB ,我用TDBImage 控件直接来显示,结果出现 Stream read error .问我要显示这些图象应该怎么做?

(来自CKER)
关键是JPG类型的图象数据。这种情况你必须先将jpg的blob数据导入内存流,
然后再使用bcb自带的tjpegimage,得到这个流的内容,最后交给bcb显示:
大致步骤如下:
std::auto_ptr<TMemoryStream> stream (new TMemoryStream);
TBlobField* field = dynamic_cast<TBlobField *>(Query->FieldByName("ImageField"));
if (field)
{
field->SaveToStream(stream.get());
stream->Position = 0;
std::auto_ptr<TJPEGImage> jpeg(new TJPEGImage);
jpeg->LoadFromStream(stream.get());
if (jpeg->Height >0 && jpeg->Width >0)
Image->Picture->Bitmap->Assign(jpeg.get());
else
Image->Picture->Assign(NULL);
}
wyy99 2003-04-14
  • 打赏
  • 举报
回复
tdbimage控件也有tpicture属性,应该也可以显示jpeg图象的,可能是默认bitmap图象,
能不能想办法修改这个默认值啊
望多多指教
谢谢
xc2927 2003-04-14
  • 打赏
  • 举报
回复
学习,
帮你uP
IT-司马青衫 2003-04-13
  • 打赏
  • 举报
回复
Q:如何在C++Builder中存取BLOB字段的数据?
A:如果你使用的是BDE的数据访问方式(不论你使用的是BDE的数据源还是ODBC的数据源)
你可以按照下面的代码来存取BLOB字段的数据:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
如果你使用的ADO的方式来访问数据库,你可以这样写:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream* pmem=new TADOBlobStream (pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream * pmem=new TADOBlobStream (pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
wyy99 2003-04-13
  • 打赏
  • 举报
回复
能不能用TDBImage控件显示啊

还有http://expert.csdn.net/Expert/TopicView2.asp?id=849224&datebasetype=now进不了啊,要登录的
xpyilin 2003-04-13
  • 打赏
  • 举报
回复
取出来用Image显示,参考:
http://expert.csdn.net/Expert/TopicView2.asp?id=849224&datebasetype=now

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧