在Delphi中控制掃描器 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
此為囀貼資料 在Delphi中控制掃描器
---- 在利用Delphi開發資訊管理系統時,常常要處理圖像,這也是資訊管理系統發展的必然趨勢。怎樣在Delphi中通過掃描器獲得所需的圖像資訊呢?不外乎有三種基本的方法:
通過圖像處理軟體,比如說Photoshop等,通過它們的掃描圖像的功能,加工成一定格式的圖像後再在自己的系統中利用; 通過掃描器介面Twain.DLL 。該介面是在安裝掃描器時提供的,它實際上是一個Plugin插件,它通過一系列函數來控制掃描器; 通過構件技術來控制掃描器。
---- 利用第一種方法能減少編程的複雜度,但是系統的集成度不高,用戶使用上也不方便;第二種方法能在驅動程式級直接控制掃描器,能在編程上提供最大的靈活性和可控性;第三種方法能充分利用Delphi的視覺化構件技術,安全、靈活、自由地利用掃描器。其實第三種方法也是建立在掃描器介面Twain.DLL之上的。本文論述的方法就採用第三種。 ---- Windows9X在其附件中提供了“映象”可選件,該附件是採用OCX構件來控制掃描器的,共有imgEdit、imgAnntool、imgScan、imgAdmin 四個,有這四個構件基本上就能完全控制掃描器。在Delphi中的用法如下: 在Windows9x中選擇安裝“映象”。(在控制面板中選擇“添加/刪除程式”,再選擇“安裝Windows”,點擊“附件”核取方塊,然後從“詳細資料”按鈕中可以找到“映象”) ?動Delphi,選擇“Component”功能表項下的“Import ActiveX Control”,這時可以看到列表中有“Wang 圖像編輯控制、Wang 圖像掃描控制、Wang 圖像管理控制、Wang 圖像縮略圖控制”,選中這四項,然後點擊“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的升級包可以解決這個問題。 ---- 至於第二個問題,可這樣解決:在Imgedit的onSelectionRectDrawn事件中寫一段代碼,把選擇區域的邊界值保存到四個總體變數中,在拷貝和剪切之前用先前保存的變數再進行一次選擇即可(當然,這一切都在後臺進行的,見前面的例子)。 ---- 開發環境:DELPHI4。0,HP ScanJet 4P掃描器; 發表人 - jackkcg 於 2002/10/25 14:11:27
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
oasis
一般會員 發表:22 回覆:10 積分:6 註冊:2002-11-01 發送簡訊給我 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
朋友:
oasis 大大你好!
我看不懂簡體 所以我將站長範例給你看看 你試看看 影像截取軟體(適用數位攝影機/掃瞄器/截取卡) http://delphi.ktop.com.tw/topic.php?TOPIC_ID=17871
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
mamahe
一般會員 發表:0 回覆:1 積分:0 註冊:2003-04-02 發送簡訊給我 |
|
arthurJ
一般會員 發表:0 回覆:3 積分:0 註冊:2003-04-14 發送簡訊給我 |
|
reebokmonkey
一般會員 發表:44 回覆:73 積分:23 註冊:2003-08-06 發送簡訊給我 |
|
stone_chao
一般會員 發表:0 回覆:1 積分:0 註冊:2003-09-14 發送簡訊給我 |
各位先進好 請容我問個蠢問題.
請問Lee兄慷慨提供的程式
(http://delphi.ktop.com.tw/topic.php?TOPIC_ID=17871)
如何指定影像裝置的對應.
因為我試用了一下. 雖然有接上scanner,
但裝置編號無論選啥都不會有影像
是不是有什麼前置步驟要設定呢?
(我的scanner確定是可以作用的, 因為從ACDsee裡可以叫用到) 我使用window附的Kodak imaging component ,
只能像ACDsee一樣從程式叫起來scanner附的介面.
請問是否可以不要show scanner的UI,
直接由我的程式控制, 掃描圖檔的某一區塊(exp, 左上角20 x 30 cm的區塊)
因為我想要做到完全的自動化 不需要使用者人為介入. 謝謝各位提撥指點.
萬分感激~
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |