社区
数据库及相关技术
帖子详情
如何在BCB6中进行图像存取?
lglywb
2003-06-23 11:31:23
如查在BCB6中进行图像的存取,要求图像位于数据库中,
并且是各种格式的,如*.bmp,*.jpg,*.jpeg,*.gif
...全文
43
6
打赏
收藏
如何在BCB6中进行图像存取?
如查在BCB6中进行图像的存取,要求图像位于数据库中, 并且是各种格式的,如*.bmp,*.jpg,*.jpeg,*.gif
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zzhong2
2003-09-13
打赏
举报
回复
数据类型一定要是image
存jpeg到SQL数据库:
if(OpenPictureDialog1->Execute())
{
ADOQuery1->Edit();
TBlobField *Field = (TBlobField*)ADOQuery1->FieldByName("photo");
Field->LoadFromFile(OpenPictureDialog1->FileName);
ADOQuery1->Post();
}
//以下是从数据库读jpeg,并显示在TDBImage控件中
#include <clipbrd.hpp>
TStream *Stream1;
TJPEGImage *Pjp;
Pjp=new TJPEGImage();
ADOQuery1->Open();
try
{
Stream1=ADOQuery1->CreateBlobStream(ADOQuery1->FieldByName("treenodes"), bmRead);//treenodes是存放jpeg内容的字段,它的类型一定要用image
Pjp->LoadFromStream(Stream1);
//Image2是TDBImage组件,它的DateSource,和FieldName属性要空着
Image2->Picture->Bitmap->Assign(Pjp);
delete Stream1;
}
__finally
{
ADOQuery1->Close();
delete Pjp;
}
下面是别人的更好的方法,可存各种图形
以下是讀出各種類型的圖片的程序,支持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類。
支持多種格式
存入:
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();
}
binbin
2003-09-13
打赏
举报
回复
ADOQuery1->SQL->Text = "insert into table values('abc', :BlobField)";
ADOQuery1->Parameters->Items[0]->LoadFromFile("文件名", ftBlob);
ADOQuery1->ExecSQL();
IT-司马青衫
2003-09-12
打赏
举报
回复
BCB数据库图像保存技术
加上头文件#include<jpeg.hpp>
1
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
OpenDialog2->FileName="";
if (OpenDialog2->Execute())
{
String f=OpenDialog2->FileName;
if (FileExists(f))
{
String ext=ExtractFileExt(f).LowerCase();
if (ext==".bmp" || ext==".jpg"|| ext==".jpeg")
{
String jpg=ChangeFileExt(ExtractFileName(f),".jpg");
TJPEGImage *j=new TJPEGImage;
if (ext==".bmp")
{
Graphics::TBitmap *b=new Graphics::TBitmap;
b->LoadFromFile(f);
j->Assign(b);
j->CompressionQuality=90;
j->Compress();
delete b;
}
else
{
TFileStream *fs=new TFileStream(f,fmOpenRead);
j->LoadFromStream(fs);
delete fs;
}
DataModule1->ADODataSet1->Edit();
DBEdit2->Text=jpg;
TStream *bs=DataModule1->ADODataSet1->CreateBlobStream(
DataModule1->ADODataSet1->FieldByName("照片图像"),bmReadWrite);
bs->Position=0;
j->SaveToStream(bs);
delete j;
delete bs;
DispJpg();
}
}
}
}
2
记住一定要在post前delete TADOBlobStream对象。
//读
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();
如果你在ttable中用了固定字段,就更简单了,以下的ADOTable1pic字段就是
读取access中的blob数据
TMemoryStream *s = new TMemoryStream();
ADOTable1pic->SaveToStream(s);
s->Position=0; //****流首位置必须为零***
TJPEGImage *jp = new TJPEGImage();
jp->LoadFromStream(s);
Image1->Picture->Bitmap->Assign(jp);
delete jp;
delete s;
写数据到access的blob字段
if (OpenDialog1->Execute())
{ADOTable1->DisableControls();
ADOTable1->Append();
ADOTable1pic->LoadFromFile(OpenDialog1->FileName);
ADOTable1name->Value=OpenDialog1->FileName;
ADOTable1->Post();
ADOTable1->EnableControls();
}
3
void __fastcall TForm2::DBImage2Click(TObject *Sender)
{
try
{
if(OpenPictureDialog1->Execute());
{
AnsiString MyFilesExtension = UpperCase(ExtractFileExt(OpenPictureDialog1->FileName));
if(MyFilesExtension==".JPG")
{
TJPEGImage *jpg=new TJPEGImage();
jpg->LoadFromFile(OpenPictureDialog1->FileName);
Clipboard()->Assign(jpg);
DBImage1->DataSource->DataSet->Edit();
DBImage1->PasteFromClipboard();
DBImage1->DataSource->DataSet->Post();
delete jpg;
}
if(MyFilesExtension==".BMP")
{
EditDataSource1->DataSet->Edit();
DataModule1->FindADODataSetDSDesigner7->LoadFromFile(OpenPictureDialog1->FileName);
}
}
}
catch(...)
{
StatusBar1->Panels->Items[1]->Text="保存图像发生异常";
}
}
4
在BCB中采用下术方法存入图片,不过显示代码不用写了,DBImage自动显示.
if(OpenPictureDialog1->Execute());
{
AnsiString MyFilesExtension = UpperCase(ExtractFileExt(OpenPictureDialog1->FileName));
if(MyFilesExtension==".JPG")
{
TJPEGImage *jpg=new TJPEGImage();
jpg->LoadFromFile(OpenPictureDialog1->FileName);
Clipboard()->Assign(jpg);
DBImage1->DataSource->DataSet->Edit();
DBImage1->PasteFromClipboard();
DBImage1->DataSource->DataSet->Post();
delete jpg;
}
猎人66
2003-06-23
打赏
举报
回复
直接显示BMP,JPG,JPEG估计没问题,GIF可能要其他插件才支持了
以BMP为例,其他同,用ADO,设pic为BLOB,存入图片
写入:
#include <jpeg.hpp>
ADOTable1->Append();
TBlobField *Blob=(TBlobField*)ADOTable1->FieldByName("pic");
Blob->LoadFromFile("C:\\xxxx.bmp")
ADOTabl1->Post();
读出
ADOTable1->Open();
TBlobField *Blob=(TBlobField*)ADOTable1->FieldByName("pic");
Blob->SaveToFile("c:\\xxxxx.bmp")
FlySky01
2003-06-23
打赏
举报
回复
up
pp616
2003-06-23
打赏
举报
回复
呵呵。楼上说的对。
Gif可以装TGifImage组件来显示。
我的C++Builder学习笔记
2008-12-04 22:13 3,118 Builder
中
使用Access数据库.txt 2009-01-09 23:36 131,577 builder组件继承关系.pdf 2009-07-31 02:52 5,311 Builder聊天.txt 2009-07-31 02:49 1,863 BUilder高效率代码.txt 2009-07-31 02:36 11,941 C++ Builder VCL库函数简介.txt 2008-12-28 21:37 879 DistanceInEarth.txt 2008-12-28 20:13 1,823 earth.txt 2009-07-31 14:47 94 Edit格式化输入.txt 2009-06-29 13:05 774 Font.txt 2009-07-29 12:37 774 FontStyle.txt 2009-06-28 10:21 96 Google代理.txt 2009-09-05 14:39 135 Release版_脱离变异环境运行程序.txt 2009-01-09 19:52 1,076 下载google卫片链接.txt 2009-07-31 00:12 4,761 不规则窗体.txt 2009-01-09 22:45 4,689
中
英文输入法的自动切换.txt 2009-07-07 23:15 97 代理.txt 2008-12-12 00:54 1,402 任意角度图片旋转.txt 2009-06-24 23:42 1,596 使用GDI+绘制旋转的图形及图片.txt 2009-07-02 09:22 5,000 创建快捷方式Builder.txt 2009-07-02 01:37 9,018 双击打开文件.txt 2009-07-31 10:51 352
图像
中
心扩散.txt 2008-12-06 12:25 126
图像
抖动如何解决.txt 2009-01-09 22:34 938 在桌面上画图.txt 2009-06-29 01:05 1,158 多语言支持——修改caption.txt 2008-12-04 13:35 192 实现全屏.txt 2008-12-07 21:31 1,615 怎样旋转一个TBitmap图片.txt 2009-07-30 23:27 55 改扩展名.txt 2009-07-30 23:34 2,230 文件夹遍历.txt 2008-12-08 23:50 9,043 文件的
存取
.txt 2009-09-11 01:09 37 新建 文本文档.bat 2009-07-31 01:27 2,362 模拟键盘输入.txt 2008-12-04 22:56 2,455 用C连接数据库.txt 2009-01-09 23:43 16 程序暂停.txt 2009-01-09 19:42 157 调用IE打开网站.txt 2009-01-06 11:31 762,901 麦卡托投影法 .mht
bcb6
按钮怎么设置图片_BCB 6 sp4 + SQL Server 2k
存取
JPEG
图像
,绝对好用!-数据库专栏,SQL Server...
在bcb 6 sp4里调试通过,欢迎大虾批评指正。//opendialog1打开jpeg
图像
,edit1保存
图像
地址,image1显示
图像
//其他格式的
图像
文件没有试验,可以试试。opendialog1->filename=""; if (opendialog1->execute()) { edit1->text= opendialog1-&...
BCB 6 sp4 + SQL Server 2k
存取
JPEG
图像
,绝对好用!
在BCB 6 sp4里调试通过,欢迎大虾批评指正。 //OpenDialog1打开JPEG
图像
,Edit1保存
图像
地址,Image1显示
图像
//其他格式的
图像
文件没有试验,可以试试。 OpenDialog1->FileName=""; if (OpenDialog1->Execute()) { Edit1->Text= OpenDialog1->File
BCB6
运行SSE2指令
BCB6
是早期的产物,有着快速优美的开发体验,可比喻为天堂般的享受。随着岁月的流失,
BCB6
的光芒逐渐暗淡,但光明依然存在,当运行SSE2指令后,有喜也有忧,喜的是可以运行加速指令,提高运算速度,忧的是SSE2后的指令再也运行不动了,这优美的软件,今天到了速度的边界,天堂的光芒在此消失,也许是千古绝唱。 为什么用SSE2指令?是为了加速,比如几秒放一帧
图像
无法实用。为什么用浮点...
BCB6
sp4+2k
存取
JPEG
图像
,绝对好用!
<script type="text/javascript"
数据库及相关技术
1,178
社区成员
18,939
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章