VFP处理JPG图像文件方法谈
来源: 作者: 出处:综艺读书 2006-10-13
Bitmap是非压缩型图像文件,占用的存储空间很大,而JPG图像文件是压缩型图像文件,因此,正确保存和显示JPG等图像文件具有很高的实用价值。
|
|
|||
上述方法对于保存和显示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=′′
if vartype(s—cfield) !=″C″ or vartype(s—cfile) !=″C″ or vartype(s—default—return) !=″C″
=MessageBox(″参数类型错!″,48,″提示″)
return ′′
endif
if type(″&s—cfield″) != ″M″
=MessageBox( ″ ′ ″+s—cfield +″ ′ ″+ ″字段必须是二进制备注型数据!″,48,″提示″)
return s—return
endif
s—temp—str = &s—cfield
if len(s—temp—str) 〈= 128
return s—return
endif
s—old—file = alltrim(left(s—temp—str,128))
if empty(s—cfile)
s—return=s—old—file
else
s—return=defaultext( s—cfile, alltrim(justext(s—old—file)) )
endif
=STRTOFILE( substr(s—temp—str,129), s—return, .F.)
return s—return
endproc
笔者使用该方法处理了大量的图像文件,在CPU 为P133的电脑上,对于每个图像文件不大于1.5MB的情况,处理速度非常满意。当图像文件较大时,则显示速度比较慢。
相关图文阅读
频道图文推荐
相关专题
最新技术文档
·用FoxWeb在网上快速发布你的FOXPRO数据库 11-03
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
站内各频道最新更新文档
站内最新制作专题
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
热门关键字导读
站内频道文章精选
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |
百度推荐,商机无限
搜索您感兴趣的内容




