社区
数据库及相关技术
帖子详情
怎样保存大量的图片字段???
clf198209
2003-08-19 10:42:30
我的这个数据库中有20个图片字段,我用access2000,请问我有什么好的解决方案,可以实现大数据量。还有较好的速度。
...全文
64
14
打赏
收藏
怎样保存大量的图片字段???
我的这个数据库中有20个图片字段,我用access2000,请问我有什么好的解决方案,可以实现大数据量。还有较好的速度。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
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;
}
natasha
2003-08-25
打赏
举报
回复
如果硬盘里东西不经常改动,存路径就好了,既方便又快捷。
goldflute
2003-08-25
打赏
举报
回复
我认为放到数据库里除了增加数据库负担外没有另的意义,所以存路径是个很好的办法。
xizhouhawk
2003-08-25
打赏
举报
回复
单机版的不就更好说了.
楼上的也说了,就存放图片的路径.
clf198209
2003-08-25
打赏
举报
回复
但是,数据库是单机版的,不用服务器
上次我的access表中含600M数据时,就慢的不得了
所以,我想请问各位高手,我这次怎么办?
真如实观
2003-08-25
打赏
举报
回复
同意pengdali(大力 V2.0),用Access可以了。
VHDLcn
2003-08-24
打赏
举报
回复
替你u p一下。
clf198209
2003-08-24
打赏
举报
回复
多谢大家的回答,我这个数据库是用来做医疗图片保存的,有1万条记录,每个记录有100个字段(包含20个图片字段),是单机版的,最好用什么数据库呢??
wuxking
2003-08-19
打赏
举报
回复
1、换SCSI 磁盘阵列,提取存储速度,同时也可以起到数据保护的作用。
2、增加内存
3、将图片单独存储,数据库里面只是存放图片的路径。不过这样有很多麻烦事情。
4、对于大图片尽量不要太大,比如用JPG格式的,或者降低分辨率,小图片(小于4K)用BMP存放
5、最好还是换一个数据库。20个图片的字段好恐怖。呵呵。
另外,你是用来提供Web服务还是怎么?你最好说清楚,才能给一个好的解决方案。
MikeWKL
2003-08-19
打赏
举报
回复
恐怕你的这个想法实现起来比较困难。
建议换数据库。
pengdali
2003-08-19
打赏
举报
回复
存图片存放在服务器上的路径,这样你检索起来速度又快,access性能不会应为图片字段而影响性能。
chensy0626
2003-08-19
打赏
举报
回复
存图片路径,存取图片数据时用文件传输的方式
chensy0626
2003-08-19
打赏
举报
回复
存图片路径,当需要存取图片数据时建议用文件传输方式
图片
的读取与存储(二进制形式)
很多人知道怎么样去设置一个Image控件的ImageURL指向一个
图片
地址链接然后显示出
图片
但是如果要将
大量
的
图片
存储并读取呢?类似与很多网站的注册功能以及相册展示功能 写了这个小列子 数据库 设计很简单就一个简单的表 两个
字段
id和Image类型的content
字段
(用来存放
图片
用二进制读取的内容)还有一个存储过程(我喜欢用存储过程)数据库里面有内容(那个女的不是我.)打开项目时请将数据库附加到SQL server 2005. 项目的功能大家还是下下来自己看吧 代码都封装了 希望这个小列子对你现在和以后要做的项目有帮助吧.
数据库中的BLOB
字段
--存
图片
等文件
我们大家都知道Oracle数据库的Blob是一个较为特殊
字段
,它比long
字段
的实际应用性能更为好,它的主要功能是用来
保存
类似
图片
之类的相关二进制的数据。以下就是文章的中主要内容的介绍。写入Blob
字段
和写入其它类型
字段
的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cur
JIRA三级权限方案 - 项目、单据、
字段
不同级别的权限控制
能控制不同成员访问不同单据和
字段
吗? 能限制某些成员能看到但是不能编辑单据和
字段
吗? Jira作为一款优秀的项目管理系统,功能全面,配置灵活,权限方案完善,可扩展、可定制。 本课程介绍权限控制的具体实施方案...
mysql 怎么存储
图片
和例子
将
图片
文件
保存
在服务器或云存储中的某个位置,并将路径
保存
在数据库中。存储
图片
数据(二进制格式):在数据库中创建一个表,包含一个BLOB
字段
来存储
图片
数据。因此,在实际应用中,通常建议将
图片
存储在外部服务器或云存储中,并在数据库中仅
保存
图片
的路径或元数据。因此,在实际应用中,通常建议将
图片
文件存储在外部服务器或云存储中,并在数据库中仅
保存
图片
的路径或元数据。在MySQL中,通常不直接存储
图片
,而是存储
图片
的路径或以二进制格式(BLOB,Binary Large OBjects)存储
图片
数据。
mysql8.x实践系列(2)Qt客户端怎么操作PostgreSql数据库?怎么
保存
和读取二进制
图片
?
还需要带上有关的动态库文件,它们可以在安装路径下找到,C:\Program Files\PostgreSQL\14\bin。2、用户自己写的qt操作PostgreSql的应用程序,发布时,除了需要数据库插件,(1)设计表,把二进制
图片
定义为bytea类型。1、Windows安装PostgreSql。安装时,去掉勾选pgadmin4。初始数据库postgres。用户名postgres。
数据库及相关技术
1,178
社区成员
18,939
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章