bitmap是非压缩型图像文件,占用的存储空间很大,而jpg图像文件是压缩型图像文件,因此,正确保存和显示jpg等图像文件具有很高的实用价值。
在vfp编程中,需保存图像文件时,通常是将图像以ole方式保存到一个general型字段中。当需要在表单中显示该图像时,则使用ole bound控件,并将该控件绑定到保存图像的字段上即可。
上述方法对于保存和显示bitmap位图时没有问题,但是对jpg、gif等图像文件则无法显示图像,而只能将其保存时的图像文件名显示出来。
vfp 6.0版中的imgae控件支持 bmp、gif、jpg和ico等图像文件格式,但是该控件不能绑定到保存图像文件的general型字段上。本文所采用的基本思路是:不将图像文件保存到general型字段中,而是把图像文件保存到一个二进制的memo型字段中,当需要显示图像时,则将该memo型字段的内容输出到一个临时文件中,然后再将临时文件名赋给image控件中picture属性即可显示图像。在报表打印输出时,也可以采用类似的方法打印图像。
为实现上述的构想,本文提供了两个函数,一个是将图像文件保存到memo型字段中,另一个是将memo型字段中的图像保存到一个外部文件中。
下面的过程文件是将一个外部图像文件保存到二进制memo型字段中。图像文件在memo型字段中的格式为:前128个字节保存原始图像文件名,其后的数据为图像数据。
procedure s—ftom
lparameter s—cfield , s—cfile
local s—temp—str
if vartype(s—cfield) !=″c″ or vartype(s—cfile) !=″c″
=messagebox(″参数类型错!″,48,″提示″)
return .f.
endif
if type(″&s—cfield″) != ″m″
=messagebox( ″ ′ ″+s—cfield +″ ′ ″+ ″字段必须是二进制备注型数据!″,48,″提示″)
return .f.
endif
if !file( s—cfile)
=messagebox( ″文件:″+s—cfile+″ 不存在!″,48,″提示″)
return .f.
endif
s—temp—str=padr(justfname(s—cfile),128, ′ ′)+filetostr(s—cfile)
replace (s—cfield) with s—temp—str
return .t.
endproc
下面的过程文件是将memo型字段中的图像保存到外部文件中,s—default—return当memo字段为空或读写错误时该过程返回的隐含信息。该过程调用成功后返回所写的图像文件名,否则返回s—default—return的值。
procedure s—mtof
lparameter s—cfield, s—cfile, s—default—return, s—old—file
local s—temp—str, s—old—file, s—return
clear resource
s—return=s—default—return
s—old—file=′′
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器