为什么我保存到数据库中的图片,再读回来以后严重失真??
我用的是access数据库,我将bmp的图片写入数据库后,再读回来,就严重失真。为什么、?
写入的代码:
sql = "select F_Pic from T_ProductParamLib where F_ProductParamID = '" + ProductParamID + "'";
FunctionLib->ClearUpQuery(ITTradeClient->QueryLocal,sql);
ITTradeClient->QueryLocal->Open();
ITTradeClient->QueryLocal->Edit();
TBlobField * pField=(TBlobField *)ITTradeClient->QueryLocal->FieldByName("F_Pic");
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;
ITTradeClient->QueryLocal->Post();
读取的代码:
TBlobField *pField=(TBlobField*)ITTradeClient->QueryLocal->FieldByName("F_Pic");//读取图片
TADOBlobStream* pmem = new TADOBlobStream(pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
ITTradeClient->QueryLocal->Close();
delete pBitmap;
delete pmem;
问题点数:0、回复次数:4Top
1 楼myy()回复于 2004-11-04 20:15:40 得分 0
如何失真?是不是 美女照片本来有穿衣服的,读回来衣服就没了?
^_^
.
。
o
0
OTop
2 楼wuxq7311(小清)回复于 2004-11-04 21:28:25 得分 0
没有道理的啊,又没有对图片处理过,读回来应该不可能和原来不一样!Top
3 楼zbc(修身养息,百战不怠)回复于 2004-11-04 22:34:42 得分 0
哈哈。。myy()兄开玩笑了。当然不是了。我也不知道为什么,也觉得奇怪。我想会不会是我的窗体我做成了半透明的。导致保存进去的时候,保存的图片读出来就会显示效果相当差,不过,也没有道理啊。我也不知道说什么。就当我没说。不过,问题还是要解决的。。。Top
4 楼ORARichard(没钱的日子......)回复于 2004-11-05 14:58:22 得分 0
把整张图片一起存入数据库,再用你读的程序去读Top




