DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: fxtony
今日帖子: 46
在线用户: 14
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 wrqwrq (蜗牛的家) ★☆☆☆☆ -
盒子活跃会员
2004/5/11 19:17:41
标题:
如何在程序中调用扫描仪 浏览:1384
加入我的收藏
楼主: 请问各位高手,如何在程序中直接调用扫描仪,扫描图片,然后保存到数据库中。
----------------------------------------------
-按此在新窗口浏览图片
作者:
男 maomao718 (maomao) ★☆☆☆☆ -
盒子活跃会员
2004/5/12 9:43:44
1楼: 通过扫描仪接口Twain.DLL 。该接口是在安装扫描仪时提供的,它实际上是一个Plugin插件,它通过一系列函数来控制扫描仪.
第一种方法是通过图象处理软件,比如说Photoshop等,通过它们的扫描图象的功能,加工成一定格式的图象后再在自己的系统中利用,可以能减少编程的复杂度,但是系统的集成度不高,用户使用上也不方便;第二种方法能在驱动程序级直接控制扫描仪,能在编程上提供最大的灵活性和可控性;第三种方法能充分利用Delphi的可视化构件技术,安全、灵活、自由地利用扫描仪。其实第三种方法也是建立在扫描仪接口Twain.DLL之上的。在这里只介绍第三种。
启动Delphi,选择“Component”菜单项下的“Import ActiveX Control”, 
这时可以看到列表中有“ 图象编辑控制、图象扫描控制、图象管理控制、图象缩略图控制”,选中这四项,然后点击“Install” 
按钮,这时在构件面板上的ActiveX舌标下就可以看到这四个构件的图标。  
---- ImgScan 的主要属性:FileType:图象的文件类型(该构件支持三 
种:TIFF,BMP,AWD);  

ScanTo:返回或设置被扫描图象的目的; 
可取值 含义  
0 (缺省) 显示被扫描的图象. 
1 显示被扫描的图象并写入一个文件. 
2 把图象写入一个文件 
3 以模板方式把图象写入文件并显示. 
4 . 以模板方式把图象写入文件 
5 传真被扫描的图象 
注意:如果取缺省值0, 
必须和 Wang ImgEdit 构件配合使用。 
DestImageControl:Wang ImgEdit构件名; 
Zoom:图象的放缩比例 

ImgScan 的主要方法:OpenScanner :打开扫描仪; 
CloseScanner :关闭扫描仪;  
StartScan : 开始扫描; 
StopScan : 停止扫描 


---- ImgEdit 的属性主要是控制扫描图象的分辨率、图象的宽高、是否 
允许对图象进行局部选 择等;其方法主要有拷贝、剪切图象到粘贴板, 
从粘贴板复制图象,旋转、放缩、 镜象图象;打印、保存、刷新图象等。  
---- 关于上述四个OCX构件的详细使用说明可在Delphi中查看其自带的 
帮助系统。  
---- 下面是使用这两个构件的一些例子:  

procedure Tscanf.N1Click(Sender: TObject); 
begin 
ImgScan1.ShowSelectScanner;  
//选择系统中已安装的扫描仪 
end; 

procedure Tscanf.N2Click(Sender: TObject); 
begin 
imgedit1.zoom:=100; //设置图象的放缩因子 
if not imgscan1.ScannerAvailable then  
//如果选择的扫描仪不可用 
imgscan1.OpenScanner;//打开扫描仪 
imgscan1.StartScan; //开始扫描图象 
imgscan1.CloseScanner; //关闭扫描仪 
end; 


procedure Tscanf.N8Click(Sender: TObject); 
begin 
if (imgedit1.IsClipboardDataAvailable  
and imgedit1.ImageDisplayed ) then 
imgedit1.ClipboardPaste(selleft,seltop); 
//从剪贴板粘贴图象,其参数为Imgedit的显示区域的起始坐标 
end; 

procedure Tscanf.N1801Click(Sender: TObject); 
begin 
if imgedit1.ImageDisplayed then 
imgedit1.Flip; //镜象图象 
end; 

procedure Tscanf.N901Click(Sender: TObject); 
begin 
if imgedit1.ImageDisplayed then 
imgedit1.RotateRight //向右旋转图象 
end; 
procedure Tscanf.N6Click(Sender: TObject); 
begin 
imgedit1.DrawSelectionRect(selleft, 
seltop,selwidth,selheight);//进行图象局部选择 
imgedit1.ClipboardCut(selleft,seltop, 
selwidth,selheight);//剪切所选区域 
end; 
---- 注意:在DELPHI中使用Imgedit构件的拷贝和剪切功能时,会出现 
以下问题:  
---- 1、 如果把整幅图象都选中,没有任何问题;  
---- 2、 如果选择了局部区域,则拷贝和剪切的区域会发生漂移;  
---- 3、 如果DELPHI做的是MS SQL后端数据库的客户端界面,那么在把 
图象内容写入数据库的图象字段中时,BDE(数据库引擎)会报错。这是 
DELPHI3。0和4。0的BUG,4。0的升级包可以解决这个问题。
----------------------------------------------
-
作者:
男 wrqwrq (蜗牛的家) ★☆☆☆☆ -
盒子活跃会员
2004/5/12 20:43:38
2楼: 谢谢 maomao718,这个程序你调试过吗?我好像在其他网站上见过,有没有 直接调用TWAIN.DLL的方法呢?(也就是你所说的第二种方法)

----------------------------------------------
-按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行54.6875毫秒 RSS