回 帖 发 新 帖 刷新版面

主题:快救命!如何从数据库中读bmp图片

数据库表单中存有图片的字段名为“TUPIAN”
Table1->Open();
DBImage2->Picture->LoadFromFile(Table1->FieldByName("TUBIAO")->AsString);


std::auto_ptr<TMemoryStream> stream (new TMemoryStream);

Tableimage_field TUPIAN->SaveToStream(stream.get());  ///请问各位大侠这句话到底应该怎么写?
stream->Position = 0;
Image1->Picture->Bitmap->LoadFromStream(stream.get());


Table1->Close();

回复列表 (共4个回复)

沙发

TMemoryStream* Stream = new TMemoryStream();
((TBlobField*)Table1->FieldByName("TUPIAN"))->SaveToStream(Stream);
或直接用SaveToFile存到文件中.

板凳

多谢iamdream你给我回帖子指教!但我的问题还没有彻底解决,再麻烦你看一下。具体程序如下:

Table1->Open();
TMemoryStream* Stream = new TMemoryStream();
((TBlobField*)Table1->FieldByName("TUPIAN"))->SaveToStream(Stream);
Stream->Position = 0;
Stream->SaveToFile("BB.bmp");

为什么生成的BB.bmp在XP系统中浏览不了?难道不是标准格式的BMP文件?而数据库中的确存在标准的BMP文件。
再次表示感谢!

3 楼

不可能是导出时出错吧?应该是你存得不正确。

4 楼

应该将Stream里的内容传到一个TBitmap对象中然后再保存,具体函数为:
bmp->LoadFromStream( stream );
bmp->SaveToFile( "bb.bmp" );

如果直接用stream保存,不是bmp格式,所以显示不了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册