前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VFP要想控制扫描仪,只要能搞定这个缺点就好用

VFP要想控制扫描仪,只要能搞定这个缺点就好用

作者头像
加菲猫的VFP
发布2021-08-16 15:23:20
5590
发布2021-08-16 15:23:20
举报
文章被收录于专栏:加菲猫的VFP

加菲猫现在来教大家搞定扫描仪,扫描仪跟高拍仪一样,也是有控件的。就是柯达出品的扫描控件。扫描仪都能用,像那种带网络的复印机,可以通过网络扫描,效果也是杠杠。

柯达扫描控件

优点:非常实用的控件,可以完成图像扫描、编辑、批注的功能。

缺点:控件比较老,扫描的文档为BMP格式,文件巨大。

今天我们就来搞定这个缺点,让扫描控件更好用。

一、 安装控件

我把相关的文件上传到腾讯云了,下载链接

https://share.weiyun.com/lzkLnmqT

解压之后有个DLL目录,双击其中的注册控件.bat

二、 VFP使用

  1. VFP表单中拖入柯达扫描控件,Name改为OleScan

 2.表单中添加一个控件Caption设为扫描,添加Click事件代码如下

代码语言:javascript
复制
If !Thisform.OleScan.ScannerAvailable()
    =Messagebox("没有检测到扫描仪驱动程序",0+64,"信息")
    Return
Endif
Thisform.OleScan.Image="c:\temp\xx"  &&归档的文件名
Thisform.OleScan.FileType=3  && 3-Bitmap Image (BMP) BMP位图文件
Thisform.OleScan.pageoption=6 &&Overwrite All Pages 覆盖所有页(覆盖文件)
Thisform.OleScan.Scanto=2  && 只归档,意思是只保存
*oImgscan.Scroll=.T.
Thisform.OleScan.StartScan  &&开始扫描,扫描
If Thisform.OleScan.StatusCode=0
    Thisform.olescan.CloseScanner
    Thisform.Refresh()
Endif

要注意的地方scanto参数归档的意思是保存,如果配置成只显示,需要配合柯达编辑控件来实现显示,编辑,保存等操作。

3.测试一下效果

扫描之后,便会在C:\TEMP生成一个xx.bmp文件。

4 因为BMP文件巨大,这里给大家一个另存的函数,方便好用。

代码语言:javascript
复制
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

调用方法:

saveimage2("xx.bmp","xx.jpg") &&支持BMP ,JPG ,GIF,TIF ,PNG格式。

下一篇文章,教你搞定图像编辑。 

搞定扫描仪,看完这篇还不会的话,那就多多学习吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 柯达扫描控件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档