我存在数据库中有时是jpg格式的图片,有时是bmp格式的图,可是用jpg类读取时在Image上只显示jpg格式的

ydx 2003-08-08 09:55:28
我想两者都 显示,有什么好法。
...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ydx 2003-08-08
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1192/1192068.xml?temp=.2489588这个地址上不去了,不知为什么我以前保存的也上不去了,不知咋搞的
zzhong2 2003-08-08
  • 打赏
  • 举报
回复
以下是讀出各種類型的圖片的程序,支持ADO,BDE或TClientDataSet
#define PICTURE_MAP__(TBit) {TBit *PG = new TBit(); \
try {PG->LoadFromStream(TmpStream);\
Pic->Assign(PG); \
}\
catch(...)\
{delete PG ;\
return false;\
}\
delete PG;\
}
//----------------------------------------------------------------
//該模板將二進制字段中的圖像(GIF或JPG等等)使用Assign方法轉為TPicture,TBitmap等等。
template <class T >
bool LoadPhotoFromField(TField *F_Photo,const AnsiString Format,T *Pic)
{if(!F_Photo->DataSet->Active) return false ;
if(F_Photo->IsNull) return false ;
else
{TStream *TmpStream = F_Photo->DataSet->CreateBlobStream(F_Photo,bmRead);
if(Format == ".JPG" || Format == ".JPEG")PICTURE_MAP__(TJPEGImage )
else if(Format == ".BMP") PICTURE_MAP__(Graphics::TBitmap)
// else if(Format == ".GIF") PICTURE_MAP__(TGIFImage )
else if(Format == ".ICO") PICTURE_MAP__(TIcon)
else if(Format == ".WMF" || Format ==".EMF") PICTURE_MAP__(TMetafile)
else return false ;
}
return true;
}
#undef PICTURE_MAP__(TBit)
//如果要支持GIF,那你要安裝支持GIF的VCL類。



支持多種格式
讀出:
http://expert.csdn.net/Expert/topic/1192/1192068.xml?temp=.2489588
存:
if(OpenPictureDialog1->Execute())
{DataSet->Edit();
TBlobField *Field = (TBlobField*)DataSet->FieldByName("photo");
Field->LoadFromFile(OpenPictureDialog1->FileName);
DataSet->FieldByName("photoFormat")->AsString =
ExtractFileExt(OpenPictureDialog1->FileName).UpperCase();
DataSet->Post();
}

以上是别人的方法,我收藏的
yezio 2003-08-08
  • 打赏
  • 举报
回复
void __fastcall TForm2::DBImage1Click(TObject *Sender)
{
try{
if(OpenPictureDialog1->Execute());
{
AnsiString MyFilesExtension;
// if(OpenPictureDialog1->Filter==".jpg")
MyFilesExtension = ExtractFileExt(OpenPictureDialog1->FileName);
//ShowMessage(MyFilesExtension);
if(MyFilesExtension==".jpg")
{
TJPEGImage * jpg = new TJPEGImage();

jpg->LoadFromFile(OpenPictureDialog1->FileName);
Clipboard()->Assign(jpg);
DBImage1->PasteFromClipboard();
delete jpg;
}
if(MyFilesExtension==".BMP")
{
// ShowMessage("OKBmp");
ADOTable3->Edit();
ADOTable3DSDesigner10->LoadFromFile(OpenPictureDialog1->FileName);
}
}
}
catch(...)
{
ShowMessage("error");
}
}
wsljj_2002 2003-08-08
  • 打赏
  • 举报
回复
我是在入库时将图像类型也保存了,读出时先查类型,然后再显示。
zzhong2 2003-08-08
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1192/1192068.xml?temp=.2489588的内容就是上面贴子开头的内容:
以下是讀出各種類型的圖片的程序,支持ADO,BDE或TClientDataSet
#define PICTURE_MAP__(TBit) {TBit *PG = new TBit(); \
try {PG->LoadFromStream(TmpStream);\
Pic->Assign(PG); \
}\
catch(...)\
{delete PG ;\
return false;\
}\
delete PG;\
}
//----------------------------------------------------------------
//該模板將二進制字段中的圖像(GIF或JPG等等)使用Assign方法轉為TPicture,TBitmap等等。
template <class T >
bool LoadPhotoFromField(TField *F_Photo,const AnsiString Format,T *Pic)
{if(!F_Photo->DataSet->Active) return false ;
if(F_Photo->IsNull) return false ;
else
{TStream *TmpStream = F_Photo->DataSet->CreateBlobStream(F_Photo,bmRead);
if(Format == ".JPG" || Format == ".JPEG")PICTURE_MAP__(TJPEGImage )
else if(Format == ".BMP") PICTURE_MAP__(Graphics::TBitmap)
// else if(Format == ".GIF") PICTURE_MAP__(TGIFImage )
else if(Format == ".ICO") PICTURE_MAP__(TIcon)
else if(Format == ".WMF" || Format ==".EMF") PICTURE_MAP__(TMetafile)
else return false ;
}
return true;
}
#undef PICTURE_MAP__(TBit)
//如果要支持GIF,那你要安裝支持GIF的VCL類。

1,178

社区成员

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

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