当前位置: 代码迷 >> VFP >> 关于fpt文件大小以及gen中存取图片的有关问题
  详细解决方案

关于fpt文件大小以及gen中存取图片的有关问题

热度:5778   发布时间:2013-02-26 00:00:00.0
关于fpt文件大小以及gen中存取图片的问题
各位帮忙,我是新手。是一个系统,是别人作的。但现在存在这样的问题:
dbf中有一个字段(gen类型,字段我为xp),里面存的是相片,当数据多时,fpt文件达到接近2G时,就不行了。
后来我在网上查了,fpt文件最大只能是2G.
我数据库中,数据也再多不了多点了。能把这事将就过去就行。人数是一万来人,现在导进九千多,fpt文件就够2G了。

我现在是这样想的,我是新手,水平低,各位别见笑:
一、是有没有办法,将fpt文件大小限制改一下?
二、将数据库中的图片导出来,再改小点。再存回去?(最好能直接完成这工作,用程序来作,不用photoshop之类),如果vf完成不了,也可以用别的也行,我还会点vb,C#)


说明:这个程序是编译完的了。没法改更了。数据库结构也没法改了。



再次谢谢了。

------解决方案--------------------------------------------------------
*--假设有一个TEMP.DBF表,此表中有一个通用型字段,并存有图片(*.BMP)
*--以下是把此图片文件从表中导出,生成名为Text.bmp文件。
*--此方法只适合BMP文件,其他文件需要调整599,如Word文件为610,Gif文件为689,Jpg文件为669等,
*--这个数值与你导入时的方法(复制/粘贴或Insert Object或Append general等 )有关,在此提供的字节偏移数值并不一定完全准确。
*------------------------------

use 表名
scan
copy to temp fields 通用字段名 next 1
handlein=FOPEN("temp.fpt")
lcFile='test'+transform(recno)+'.bmp'
handleout=FCREATE(lcFile)
&&本例设保存的为BMP文件,如果不知道文件格式,需要判断各种文件的前三节字节,然后再定位偏移位置。

*** 决定"Temp.fpt"文件的长度 
gnEnd = FSEEK(handlein, 0, 2)
gnTop = FSEEK(handlein, 0)

*** 保存全部文件到一个串 "str1" 中
str1 = FREAD(handlein, gnEnd)

***  从 Str1 的偏移 599 字节开始保存到 "str2"
str2=RIGHT(str1,LEN(str1)-599)
      *** 写 "Str2" 到 BMP 文件 "Test.BMP"
n=FWRITE(handleout,str2)
      *** 关闭两个打开的文件
=FCLOSE(handlein)
=FCLOSE(handleout)
&&会在当前目录下生成一个Test1-n.bmp文件。
endscan

方法很多,不帖了。

  相关解决方案