VFP使用柯达控件控制扫描仪,解决导出文件体积过大的问题

December 17, 2023
测试
测试
测试
测试
3 分钟阅读

猫猫在做扫描仪控制的时候,使用的柯达扫描控件,这个控件控制扫描仪非常实用,还带有图片编辑的功能,但问题也有,就是导出的图片体积太小了。

我使用的是MYIMG.FLL,结果发现中能修改长度与宽度,图片长宽改太小,文件体积是够用了,但是图片看不清了。

研究了一下,发现图片的大小,不仅仅取决于图片的长度与宽度,分辨率也很关键。分辨率也就是DPI,我们常用的网页上的图片DPI是72,PHOTOSHOP默认也是72。

PS默认画布

扫描仪却是200-300DPI,所以造成文件体积巨大,MYIMG只能实现获取DPI,不能修改。

经行者孙指点,拿到了这样的函数。

Function saveimage2(openfile As String,savefile As String)

   lqEncoderClsID_BMP=0h00F47C55041AD3119A730000F81EF32E &&BMP
   lqEncoderClsID_JPG=0h01F47C55041AD3119A730000F81EF32E &&JPG
   lqEncoderClsID_GIF=0h02F47C55041AD3119A730000F81EF32E &&GIF
   lqEncoderClsID_TIF=0h05F47C55041AD3119A730000F81EF32E &&TIF
   lqEncoderClsID_PNG=0h06F47C55041AD3119A730000F81EF32E &&PNG
   Declare Long GdipLoadImageFromFile In GDIPlus.Dll String cFile, Long @ nativeImage
   Declare Long GdipSaveImageToFile In GDIPlus.Dll Long nativeImage, String cFile, ;
      String EncoderClsID, String EncoderParameters
   Declare Long GdipDisposeImage In GDIPlus.Dll Long nativeImage
   lcInputFile=Strconv(openfile+Chr(0),5)
   lcOutputFile=Strconv(savefile+Chr(0),5)
   lnImage=0
   GdipLoadImageFromFile(lcInputFile,@lnImage)
   GdipSaveImageToFile(lnImage, lcOutputFile, Evaluate('lqEncoderClsID_'+Upper(Justext(savefile))), Null)
   GdipDisposeImage(lnImage)
   Erase &openfile
Endfunc

将柯达控件处理过的图片,用这个函数再保存一下,完美解决文件体积过大的问题。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多