扫描仪跟高拍仪一样,也是有控件的。就是柯达出品的扫描控件。扫描仪都能用,像那种带网络的复印机,可以通过网络扫描,效果也是ok。
柯达扫描控件
优点:非常实用的控件,可以完成图像扫描、编辑、批注的功能。
缺点:控件比较老,扫描的文档为BMP格式,文件巨大。
今天我们就来搞定这个缺点,让扫描控件更好用。
一、 安装控件
我把相关的文件上传到腾讯云了,下载链接
https://share.weiyun.com/lzkLnmqT
解压之后有个DLL目录,双击其中的注册控件.bat
二、 VFP使用
1. VFP表单中拖入柯达扫描控件,Name改为OleScan
2.表单中添加一个控件Caption设为扫描,添加Click事件代码如下
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文件巨大,这里给大家一个另存的函数,方便好用。
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格式。