一个图片管理系统的方案,请指出不足,请教更好解决办法,在线等,急急!!!!!!!

delphidj 2006-05-14 06:42:18
各位兄弟,请教了。我现在做一个数据库管理系统,难点在每个记录都对应一个到多个图片,要数据和图片一块显示出来。(图片太多,存储于数据库中会很大,很慢)
我现在的设计方案是这样:
1.服务器端数据存储到数据库,图片以编码为名称存储在一个文件夹下,对此文件夹提供ftp下载服务
2.客户端按查询得的编码,下载图片到客户端。
3.对下载到的图片产生缩略图。
4.将缩略图与数据写入客户端的一个临时数据库中。
5.界面上的数据就采用DBCtrlGrid1将(数据+图片)成块显示出来。
以上是小弟的初步方案,我现在担心的是一旦一次要下载图片的图片很多时,会不会很慢?第四步是否
必要要将数据+图片同时写入数据库,因为这一步会相对耗时很多?是否有更好的办法
小弟不知各位还是否有更好的方案,能否告知?我的方案也请各位指出不足,谢谢各位了
...全文
600 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
baffling 2006-12-14
  • 打赏
  • 举报
回复
up
erhan 2006-07-23
  • 打赏
  • 举报
回复
应用程序里嵌个浏览器,把查询做成asp岂不很省事?
homeofish 2006-07-23
  • 打赏
  • 举报
回复
我觉得可以如存到数据库,用TMEMORYSTREAM读出数据来
huangb_99 2006-07-05
  • 打赏
  • 举报
回复
我看到过一款专业的图形与数据集成的软件,叫Visualnet。它们在网络版上的图形处理速度和单机版差不多。
你可以到 www.ntw.com 上了解一下他们怎么做的。
LukyDee 2006-06-30
  • 打赏
  • 举报
回复
同意楼上的。
图片还是保存在独立文件夹中好。起码用量问题不用考虑,剩下的是读取方式了。
如果是单个单个图片查询的,或查出多条数据后再个别查看图片的,用查一个,就读取一幅图片就算了。这样也很快的。
如果是浏览多幅图片的形式,没写过,可以是写几幅入内存了,按顺序显示。有需要就换一批图就可以了。
proudprince 2006-06-29
  • 打赏
  • 举报
回复

我最近也做了个类似的程序,用来扫描并保存质保书的,以前也是保存在数据库中,但保存的时候极慢。现在改为上传到服务器,以文件形式存放,数据库只保留路径。客户端查询时FTP形式下载,目前用户反映良好。
cnmaxu 2006-05-19
  • 打赏
  • 举报
回复
Jpg 压缩网上有好多例子,都是如何把 bmp 转换成 jpg 的,要用的 TJPEGImage 对象和 JPEG 单元。 下面是我自己的一个例子,注意 JPG 压缩并保存到数据库中后不可以用 DBImage 显示,要自己写程序,不然会报错,不过你可以用第三方的组件,也很方便,压缩转换的代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
B:TBitmap;
J:TJPEGImage; //<<<用此类,你要 uses JPEG 单元。
begin
B:=TBitmap.Create;
try
B.LoadFromFile('c:\Desktop.bmp');
J:=TJPEGImage.Create;
try
J.Assign(B);
J.SaveToFile('c:\Desktop.Jpg');
// Desktop.bmp 为我从我当前 Delphi 的编辑环境抓屏的图为 1024 * 768 的 24bit(真彩图)
// 3MB多的图,未经任何处理,
// 转换后变成了 166KB 当然视图片的内容而言,内容不同压缩比不同。
// 别忘了 JPG 图片是失真的。
//-------------------------------------------------------
//再试试 50% 压缩;
J.CompressionQuality:=50; //<<<压缩比
J.Compress(); //<<<压缩函数
J.SaveToFile('c:\CompressionQuality.Jpg');
//效果比较差,尺寸又小了许多,变成了 90KB 。
finally
J.Free;
end;
finally
B.Free;
end;
end;
cnmaxu 2006-05-19
  • 打赏
  • 举报
回复
这说的这个模式只限 C/S 。
1、图片大的问题。通常我会这么解决图片太大的问题,我会保存为 Jpg,并根据我的要求调整压缩比。
2、数据结构:
TableMain 你的主记录表,pID 为主键,TablePic 同样以 pID 为主键,一对一的关系。
3、显示问题:
在批量浏览的时候只显示主表记录,如果想查看图片,可单独做按钮,或双击一条记录显示详细内容,这个时候再从数据库中把对应的图片取出来显示,由于是单条就会很快。
4、效率问题:
如果想大量的显示,比如一屏显示 N 条记录,则要费一点工夫了,会大加程序量:
1、采用本地缓存技术,即每看一张图片就把它给保存到本地的目录中,并且打上最后更新的时间,否则你没办法判断,本地的图片新,还是服务器的图片新。
2、分屏显示,因为屏幕的大小是有限的,你不可能一下子显示很多图片,太多也没法看,
最多也就是二三十条,那这个时候如果用 C/S 程序一部分从本地取,一部分从远程取,就
会很快,我所说的一部分是本地有的就在本地,本地没有的就去服务器取。
5、保存在数据库(SQL Server)中后,数据库急骤膨胀的问题:
可以把图片这张表建在另一个数据库中例如在 SQL Server 中,DBMain 这是主数据库,
DBPic 是照片数据库,把 TablePic 建在 DBPic 中,把 TableMain 建在 DBMain 中。

缺点:
我们用的是 SQL Server 的数据库,存入大量的图片以后,数据库的尺寸会急骤膨胀,而且删除、插入操作越频繁数据库日志文件的尺寸膨胀就越利害。

说的比较多,不知道对楼主有没有用,咱们相互交流。
wxmwxmwxm 2006-05-19
  • 打赏
  • 举报
回复
个人认为数据和图片不要一块显示出来,先显示数据,点查看图片时再从数据库读出来显示
dabaicai 2006-05-16
  • 打赏
  • 举报
回复
把图片存到本地,不放在数据库不行吗?
转换为流 :TFileStream TMemoryStream 处理
即使放到数据库单独放一个表种,界面显示的时候,先显示数据记录,图片显示部分先loading... 然后显示图片,大家就能接收,谁都知道图片慢,但记录不能慢
存的时候同样
delphidj 2006-05-16
  • 打赏
  • 举报
回复
怎摸进行图片压缩,能具体点吗?
如果全放到数据库中,速度就是最大的频径,数据可能2--5万比,恐怕query.open都得等上好久
luxuewei5214 2006-05-16
  • 打赏
  • 举报
回复
将图片压缩,放入数据库好一点吧,使用流操作图片速度应该还可以
delphidj 2006-05-14
  • 打赏
  • 举报
回复
说句话 吧
delphidj 2006-05-14
  • 打赏
  • 举报
回复
up

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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