网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 数据库类-> Foxpro-> VFP处理JPG图像文件方法谈

VFP处理JPG图像文件方法谈
作者:佚名 来源:InterNet 加入时间:2005-1-31
相关文章
  • 如何用VFP的dbf进行SQL Server 7.0 的分布式查询
  • VFP智能感应的二次开发
  • 在VFP5.0中实现中英文自动切换
  • 在VFP中实现跟变式组合框及椭圆图形菜单
  • VFP中实现在浏览器中运行应用程序方法
  • 在VFP中模拟动画
  • VFP表跟踪实现方法
  • 在VFP报表中实现每页打印指定记录数
  • 让VFP程序在浏览器中运行
  • 分发VFP应用时自动建立快捷方式
  • 相关书籍:
    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=′′


      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的情况,处理速度非常满意。当图像文件较大时,则显示速度比较慢。

    [文章录入员:nancy]

    相关文章
  • 如何用VFP的dbf进行SQL Server 7.0 的分布式查询
  • VFP智能感应的二次开发
  • 在VFP5.0中实现中英文自动切换
  • 在VFP中实现跟变式组合框及椭圆图形菜单
  • VFP中实现在浏览器中运行应用程序方法
  • 在VFP中模拟动画
  • VFP表跟踪实现方法
  • 在VFP报表中实现每页打印指定记录数
  • 让VFP程序在浏览器中运行
  • 分发VFP应用时自动建立快捷方式
  • 相关书籍:
    本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    Foxpro
    ACCESS
    MS SQL
    MySQL
    Oracle
    Foxpro
    PowerBuilder
    Sybase
    其它
    电脑教程阅读排行
    ·Visual FoxPro 9....
    ·VFP与Excel交互编程
    ·Visual Foxpro生成任...
    ·VFP访问外部数据源的几种方法
    ·为Visual FoxPro应用...
    ·如何用VFP的dbf进行SQL ...
    ·如何修复被破坏的Foxpro数据...
    ·用VFP6.0编写图片浏览器
    ·在VFP报表中实现每页打印指定记...
    ·利用Foxpro在网络环境下开发...