| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2720 人关注过本帖
标题:[求助]如何存放,显示照片
只看楼主 加入收藏
zdh80wjm
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-5-8
收藏
 问题点数:0 回复次数:2 
[求助]如何存放,显示照片
人事档案管理中,照片如何存放?是单独存放还是存放在记录的某字段中?如何显示人员的照片?请各位高手指点,谢谢!
搜索更多相关主题的帖子: 照片 字段 人事档案 
2006-05-10 10:55
lndsqfyq
Rank: 1
等 级:新手上路
帖 子:232
专家分:0
注 册:2006-1-16
收藏
得分:0 

放在备注字段或通用字段里。希望下面的东西能帮到你。
1、利用通用字段(General Field)进行图像数据的管理。

在各种版本(如2.5、2.6、3.0、5.0)的FoxPro for Windows(3.x/95)下,我们都可以利用数据库表的通用字段(General Field)把图像文件作为OLE(对象连接与嵌入)数据进行管理,这有两种方法,一是连接,当通用字段连接一个图像文件后,该文件仍必须存放在原目录下,不可删除,FoxPro保持与它的连接,当图像文件改变时,对应存放在通用字段的数据也自动改变,这种方法实际上跟以图像文件管理的形式没什么两样。第二种方法是嵌入,图像文件嵌入通用字段后即成为数据库的一部分,存放在DBF文件对应的FPT文件中,此时,图像文件本身与通用字段无牵连,可删除,若不作删除,则等于占了两份硬盘空间,这对存储大量图像数据的硬盘来讲是极不划算的。通用字段中的图像数据可利用SAY命令直接进行屏幕显示或打印。
具体编程方法如下:
(1)将图像文件嵌入人员数据库的通用字段中:
txwjm=ryk.rybh+".bmp" && 先获取当前人员的图像文件 && 名(人员编号+图像格式)
Append General ryk.zp from (txwjm)
(2)直接显示通用字段的图像数据:
@x,y SAY ryk.zp ISOMETRIC SIZE n1,n2
其中,ryk是人员数据库的别名, zp是通用数据类型的照片字段名,x、y是图像显示的起始行、列位置,修改SIZE中的n1、n2参数可对图像进行缩小、放大显示。如果要直接输出到打印机,则必须先运行set device to printer命令。

值得一提的是,利用Foxpro for windows的通用字段通过OLE还可以对PCX、JPG等其他各种格式的图像文件进行管理,显示速度也非常快,但都必须在Windows环境下才能运行,而且图像文件嵌入数据库后,需通过剪贴板的形式手工操作才能还原成原图像格式的文件,很z成批地进行还原(一般需通过其他编程才能实现),从而使图像数据的重新剪接、备份、传输等变得十分困难。所以,用这种数据类型管理图像文件,优点和缺点都比较明显,在应用中,就需要视具体情况而定了。

2、利用备注字段(Memo Field)进行管理
我们知道,FoxPro中的备注类型字段除了可以储存一般的文字信息外,还可以储存图像、图形、音乐等二进制数据,借助于此,我们也可将人员数据库的照片字段设置为备注类型,然后利用Append Memo命令将图像文件装入到对应记录的照片字段中,成为数据库的一部分,存放在DBF文件对应的FPT文件中,而且装入后,图像文件本身可删除。这样,既节约了磁盘空间,又使文字信息与照片构成了一一对应关系,而且还可以非常方便地利用FoxPro本身所提供的Copy Memo命令成批地将备注字段的二进制数据还原成图像格式的文件,以作显示或重新裁
剪、备份、传输之用。

具体编程方法如下:
(1)将图像文件装入人员数据库的备注字段:
txwjm=ryk.rybh+".bmp"
Append Memo ryk.zp from (txwjmz) overwrite
(2)从数据库的备注字段中还原图像文件:
Copy Memo ryk.zp to (txwjm)
(3)显示图像文件:
@x,y SAY txwjm BITMAP ISOMETRIC SIZE n1,n2
其中,zp是人员数据库ryk的备注类型照片字段名,x、y是图像显示的起始行、列位置,修改SIZE中的n1、n2参数可对图像进行缩小、放大显示。但必须注意的是该显示命令只能在FoxPro for Windows下使用,而且只能显示BMP格式的图像文件,不支持PCX等其它格式。另
外, 如果要将BMP格式的图像文件直接输出到打印机,也必须先运行set device to printer命令。

在DOS环境下,我们也可用FoxPro的备注字段对图像文件进行存储,但FoxPro for DOS本身并不提供对图像文件进行屏幕显示的命令,只能借助外部命令来实现。比较常用的方法是利用UCDOS的特殊显示功能,但也只能显示PCX格式的图像文件,不支持BMP等其他格式,而且不能与FoxPro输入输出的函数相容,必须利用打印口3才能进行特殊显示。值得庆幸的是,北京希望公司不失时机地推出了一个软件开发工具包:UCDOS SDK 2.0 for FoxPro,其中提供了功能强大的基本图像函数库,它不仅支持BMP、PCX等多种图像格式,而且可以直接对备注字段中的图像数据进行屏幕显示、无级缩放,由于SDK是以函数库的形式提供对FoxPro的功能扩展,所以其函数的使用方法与FoxPro内部函数的使用方法完全相同,对程序员来说,SDK实际上只是提供了
更多的FoxPro函数而已。SDK函数亦可自动编译进EXE文件,脱离SDK独立运行。

(1)将图像文件装入人员数据库的备注类型字段:同上(略)
(2)显示备注字段中的图像数据:
set library to fp26x.p1b additive && 打开SDK函数库
=setdmode(10) && 设置256色显示模式
if not empty(ryk.zp)
=showbmp(x,y,"ryk.zp") && 直接显示备注字段
endif
其中,zp是人员数据库ryk. bf的备注类型照片字段名,fp26x是UCDOS SDK for FoxPro提供的外部函数库(对应FoxPro 2.6X版本,其他版本各有对应的外部函数库),x、y是图像显示的起始行、列行置。如果要进行放大、缩小显示,则必须在进行显示之前设置无级缩放,编程方法如下:
=autosize(.T.) &&设置可进行无级缩放
if not empty(ryk.zp)
=showbmpin(x,y,n1,n2,"ryk.zp")
*在某一区域全域显示备注字段,修改n1、n2即可进行
*无级缩放显示
endif
笔者在设计一个人员图文管理信息系统时,曾将近五万多个图像文件(每个图像文件约15K左右)存放在备注类型的字段中,并利用UCDOS SDK for FoxPro提供的图像函数按上述方法编程实现图文同屏显示及打印,效果非常好,特别是在进行成批图像浏览显示时,可利用SQL命令Select rybh,zp from ryk where 条件 into cursor tmp将满足条件的图像数据存放到一个虚似临时数据库文件tmp中,除非内存无法容纳,否则绝大部分时间,tmp将自动存放在内存中,所以,利用SDK函数直接显示内存中的备注字段数据,其速度之快是可想而知的,这一点其他方法难以望其项背。另外有一个好处是对硬件配置要求比较低,但SDK也有令人遗憾之处,那就是只能支持BMP、PCX、ICO三种图像格式,对图像数据的打印支持也不够,只能通过打印屏幕上某一区域(即图像显示的区域)的方法来实现图像打印,打印速度比较慢。

综上所述,在Windows环境下开发基于FoxPro的图文管理信息系统,可借助通用、备注两种数据类型对比较大量的图像数据进行管理,如果图像文件装(嵌)入后不需(或不想另外编程实现)成批还原以作重新剪接或其他之用,或存在非BMP格式的图像文件,则宜使用通用数据类型;否则,以备注类型为佳。而在DOS环境下,根据笔者的经验,最好用备注类型管理图像文件,并辅以UCDOS SDK提供的图像函数进行编程,效果也非常理想,有兴趣的读者不妨一试。


2006-05-10 12:56
hwfk4707
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-5-17
收藏
得分:0 
上述方法太麻烦。(对不起!)

用下列方法:
1、数据表中人员设“编号”字段。
2、单独建立照片存放目录,如 D:\PIC 。
3、在表单上添加“图像”控件。
4、在表单上浏览人员的其他控件中,加命令语句(假如为IMAGE1):
THISFORM.IMAGE1.PICTURE='pic\'+编号+'.jpg'
就可以浏览照片了。
打印时与此类似。


2006-05-17 16:37
快速回复:[求助]如何存放,显示照片
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021142 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved