Copyright© 2001-2005 T.Fujiyama All Rights Reserved.
TWAINとは TWAIN Working Groupという
団体が標準化した、画像入力機器とパソコンを接続するための技術仕様です。
TScannerコンポーネントはTWAINドライバを介してスキャナーや、デジカメなどから
画像を取得する Borland Delphi用のコンポーネントです。
メーカー名 | 機種名 | |
---|---|---|
スキャナ | Cannon | CanoScan 600 |
UMAX | Astra 600 | |
デジカメ | FujiFilm | FinePix500 + インターフェースバリューキット |
TScanner はパッケージとして提供されます。次の手順にてインストールを行って ください。
ディレクトリ | ファイル名 | 内容 |
---|---|---|
TScanner | readme.1st | はじめにお読みください |
tscanner.html | マニュアル(このファイル) | |
vscan50.bpl | 実行時パッケージ | |
dclscan50.bpl | 設計時パッケージ | |
sample1 | 簡単なサンプル | |
sample2 | 高度なサンプル |
上記ファイル名とフォルダ名は Delphi5用の名称です。 Delphi6用はそれぞれ scan60.lzh, vclscan60.bpl, dclscan60.bpl, Delphi6 と読み替えて下さい。
procedure TForm1.Button1Click(Sender: TObject); begin if Scanner1.Execute then Scanner1.DrawFixedAspect(Image1); end;
Sample2 のディレクトリに高度な使い方をしたサンプルプロジェクトがあります ので、ソースを参照してください。
【宣言】
TScanPoint = record X: Single; Y: Single; end;
【説明】
TPointのSingle版です。
【宣言】
TscanRect = record case Integer of 0: (Left, Top, Right, Bottom: Single); 1: (TopLeft, BottomRight: TScanPoint); end;
【説明】
TRectの Single版です。
【宣言】
TScanRange = class(TPersistent) public constructor Create(Scanner: TScanner); published property Supported: Boolean; property Min: Single; property Max: Single; property Step: Single; property Default: Single; property Value: Single; end;
【説明】
Brightness, Contrast, Gamma, Shadow, Highlight, Threshold, Resolution, Scaling のプロパティを指定するのに使用します。
メンバー | 機能 |
---|---|
Supported | Trueの時にはこの機能がサポートされています |
Min | 最小値を返します。 |
Max | 最大値を返します。 |
Step | ステップ値を返します。 |
Default | デフォルト値を返します。 |
Value | 現在の設定値を返します。 |
【宣言】
TScanUnitMode = ( umInch, umCm, umPica, umPoint, umTwips, umPixel ); TScanUnitModes = set of TScanUnitMode;
【説明】
イメージの取込み単位を指定します。 UnitModeは取込み範囲と解像度に影響します。
値 | 説明 |
---|---|
umInch | インチ単位 |
umCm | センチメートル単位 |
umPica | パイカ単位 |
umPoint | ポイント単位 |
umTwips | Twips単位 |
umPixel | Pixel単位 |
* umPica, umPoint, umTwipsの単位をサポートしているTWAINドライバを使用した ことが無いので、これらの単位で実機テストは行なわれていません。
【宣言】
TScanPixelType = ( ptBlackWhite, ptGray, ptRGB, ptPalette, ptCMY, ptCMYK, ptYUV, ptYUVK, ptCIEXYZ ); TScanPixelTypes = set of TScanPixelType;
【説明】
取込むイメージの種類を指定します。
値 | 説明 |
---|---|
ptBlackWhite | 白黒2値 |
ptGray | 白黒グレースケール |
ptRGB | RGBカラー |
ptPalette | パレットカラー |
* 上記以外のPixelTypeはサポートしていません。
【宣言】
TScanPaperSize = ( psCustom, psA5, psA4, psA3, psB5, psB4, psLetter, psPostCard );
【説明】
取込むイメージサイズを指定します。
値 | 説明 |
---|---|
psCustom | カスタムサイズ |
psA5 | A5サイズ |
psA4 | A4サイズ |
psA3 | A3サイズ |
psB5 | B5サイズ |
psB4 | B4サイズ |
fpsLetter | Letterサイズ |
psPostCard | 官製はがきサイズ |
【宣言】
TScannerCap = ( scBrightness, scContrast, scGamma, scHighlight, scShadow, scThreshold, scResolution, scScaling, scAutoFeeder, scFrame ); TScannerCaps = set of TScannerCap;
【説明】
どの機能がサポートされているかを表します。
値 | 説明 |
---|---|
scBrightness | 照度 |
scContrast | コントラスト |
scGamma | ガンマ |
scHighlight | ハイライト |
scShadow | シャドウ |
scThreshold | スレッシュホールド |
scResolution | 解像度 |
scScaling | スケーリング |
scAutoFeeder | オートフィーダー |
scFrame | フレームサイズの変更 |
【宣言】
TScanImageInfo = record XResolution: Single; YResolution: Single; Width: Integer; Height: Integer; BitDepth: Integer; PixelType: TScanPixelType; end;
【説明】
取込むイメージの情報を表します。 OnBeforeScanイベントで使用します。
メンバー | 説明 |
---|---|
XResolution | X方向の解像度を表します。*1 |
YResolution | Y方向の解像度を表します。*1 |
Width | イメージの幅を表します。*2 |
Height | イメージの高さを表します。*2 |
BitDepth | ビット深度を表します。 |
PixelType | ピクセルタイプを表します。 |
*1 実機テストを行なった機器ではUnitModeに関係なく常に DPIの値が格納されていました。
*2 実機テストを行なった機器ではUnitModeに関係なく常にピクセル単位の値が格納されていました。
【宣言】
TScanSourceInfo = record VersionMajor: Integer; VersionMinor: Integer; VersionInfo: String; Manufacturer: String; ProductFamily: String; ProductName: String; end;
【説明】
TWAINデータソースの情報を格納します。
メンバー | 説明 |
---|---|
VersionMajor | バージョンメジャー番号 |
VersionMinor | バージョンマイナー番号 |
VersionInfo | バージョン情報 |
Manufacturer | 製造者名 |
ProductFamily | 製品ファミリー名 |
ProductName | 製品名 |
【宣言】
property Active: Boolean default False;
【説明】
TWAINデバイスの有効、無効を設定します。 また現在の状態を取得することもできます。
Active := True は Openメソッドと同等です。
Active := FalseはCloseメソッドと同等です。
【宣言】
property Caps: TScannerCaps;
【説明】
TWAINデバイスがサポートしている機能を返します。
【宣言】
property MultiTransfer: Boolean default False;
【説明】
連続取込みを有効にします。
MultiTransferがFalseになっていると、一枚イメージを取込むと自動的にTWAINドライバーが閉じられます。
【宣言】
property ShowUI: Boolean default True;
【説明】
ユーザーインターフェース画面を表示するかどうかを指定します。
【宣言】
property ShowIndicator: Boolean default True;
【説明】
取込み中のインジケータ表示を行なうかどうかを指定します。
【宣言】
property SourceName: String;
【説明】
使用するTWAINソースデバイスの名称を設定します。
また、デバイスをオープンした時には、そのデバイス名が設定されます。
【宣言】
property SourceNames: TStrings; (readonly)
【説明】
インストールされているTWAINソースデバイスの名称を返します。
【宣言】
property UseDefaultSource: Boolean default False;
【説明】
デバイスのオープン時にデフォルトのTWAINソースデバイスを使用するか指定します。
Trueに設定されていると、デフォルトのTWAINソースデバイスが使用されます。
Falseに設定されていると、デバイスの選択画面が表示されて、使用するデバイスを選択します。
【宣言】
property UseCurrentValue: Boolean default True;
【説明】
デバイスのオープン時にTWAINソースデバイスが保持している設定値を使用するかどうかを指定します。
Trueに設定すると、プロパティの値は無視されてデバイスの設定値を使用します。
Falseに設定すると、プロパティの値をデバイスに設定します。
【宣言】
property Bitmap: TBitmap;
【説明】
取り込んだイメージが保持されます。
【宣言】
property PixelType: TScanPixelType; default ptRGB;
【説明】
取込むイメージのピクセルタイプを設定・取得します。
どのPixelTypeがサポートされているかは PixelTypesプロパティを参照します。
【宣言】
property PixelType: TScanPixelTypes;
【説明】
スキャナーがサポートしているピクセルタイプを取得します。
【宣言】
property BitDepth: Integer; default 24
【説明】
ビット深度を設定・取得します。
TWAINドライバーによっては PixelTypeがptRGBの時にBitDepthに1を代入すると、
自動的に PixelTypeが ptBloackWhiteに変更されるものや、
PixelTypeが優先されてBitDepthが無視されるものなど、
ドライバによって動作が変わります。
【宣言】
property Resolution: TScanRange;
【説明】
解像度を指定します。
UnitModeの単位で指定しますので DPIで指定するには
UnitModeが umInchに
設定されている必要があります。
【宣言】
property Scaling: TScanRange;
【説明】
倍率を指定します。
【宣言】
property AutoBright: Boolean; default True;
【説明】
解像度を指定します。
自動でブライトネスを調整します。
【宣言】
property Brightness: TScanRange;
【説明】
ブライトネスを調整します。
ptBlackWhite以外のイメージが対象になります。
【宣言】
property Contrast: TScanRange;
【説明】
コントラストを調整します。
ptRGB, ptPaletteのイメージが対象になります。
【宣言】
property Gamma: TScanRange;
【説明】
ガンマを調整します。
ptBlackWhite以外のイメージが対象になります。
【宣言】
property Highlight: TScanRange;
【説明】
ハイライトを調整します。
ptBlackWhite以外のイメージが対象になります。
【宣言】
property Shadow: TScanRange;
【説明】
シャドウを調整します。
ptBlackWhite以外のイメージが対象になります。
【宣言】
property Threshold: TScanRange;
【説明】
中間値を調整します。
ptBlackWhiteのイメージが対象になります。
【宣言】
property XNativeResolution: Single; (Readonly, Active時のみ)
【説明】
スキャナーのX方向の実解像度を取得します。
【宣言】
property YNativeResolution: Single; (Readonly, Active時のみ)
【説明】
スキャナーのY方向の実解像度を取得します。
【宣言】
property UnitMode: TScanUnitMode; default umInch;
【説明】
取込みサイズの単位を設定します。 UnitModeは取込みサイズ、解像度に影響します。
【宣言】
property UnitModes: TScanUnitModes; (Readonly)
【説明】
スキャナーがサポートしている単位を返します。
【宣言】
property PaperSize: TScanPaperSize;
【説明】
取込みサイズを設定します。
psCustom 以外に設定すると、
FrameLeft, FrameTopは0に、
FrameWidth, FrameHeight はその用紙サイズに設定されます。
【宣言】
property FrameLeft: Single; property FrameTop: Single; property FrameWidth: Single; property FrameHeight: Single;
【説明】
取込みサイズを指定します。
UnitModeの単位で指定して下さい。
これらのプロパティに値を設定すると PaperSizeプロパティは自動的に
psCustomに変更されます。
【宣言】
property FrameRect: TScanRect;
【説明】
取込みサイズを TscanRect型で指定します。
UnitModeの単位で指定して下さい。 これらのプロパティに値を設定すると
PaperSizeプロパティは自動的に psCustomに変更されます。
次のコードは、 Scanner1.FrameRect := R; 次のコードと同等です。 Scanner1.FrameLeft := R.Left; Scanner1.FrameTop := R.Top; Scanner1.FrameWidth := R.Right - R.Left; Scanner1.FrameHeight := R.Bottom - R.Top;
【宣言】
property MaxFrameWidth: Single; (ReadOnly) property MaxFrameHeight: Single; (ReadOnly)
【説明】
サポートしている最大用紙サイズを返します。
サイズは UnitModeの単位で取得されます。
【宣言】
property MaxFrameRect: TScanRect; (ReadOnly)
【説明】
サポートしている最大用紙サイズを TScanRect型で返します。
サイズは UnitModeの単位で取得されます。
次のコードは R := MaxFrameRect; 次のコードと同等です。 R.Left := 0; R.Top := 0; R.Right := MaxFrameWidth; R.Bottom := MaxFrameHeight;
※注意 ドキュメントフィーダー付のスキャナーでの実機テストは行っていません。 フィーダーをお持ちの方のレポートをお待ちしております。
【宣言】
property HasFeeder: Boolean; (ReadOnly, Active時のみ)
【説明】
スキャナーがドキュメントフィーダーを持っているかを表します。
【宣言】
property FeederEnabled: Boolean;
【説明】
ドキュメントフィーダー有効にするかどうかを指定します。
【宣言】
property AutoFeedEnabled: Boolean;
【説明】
自動フィードを有効にするかどうかを指定します。
【宣言】
property FeederLoaded: Boolean; (ReadOnly)
【説明】
フィーダーにドキュメントがロードされると、Trueになります。
【宣言】
property ScanSourceInfo: TScanSourceInfo; (Readonly)
【説明】
TWAINデータソースの情報が得られます。
【宣言】
property Version: String; (ReadOnly)
【説明】
TScannerコンポーネントのバージョン情報を返します。
【宣言】
constructor Create(AOwner: TComponent);
【説明】
Create メソッドを呼び出すと,TScannerをインスタンス化できます。
【宣言】
function Open: Boolean;
【戻値】
True オープン成功
False オープン失敗
【説明】
TWAINソースドライバをオープンします。
Active := Trueと同等です。
【宣言】
function Close: Boolean;
【戻値】
True クローズ成功
False クローズ失敗
【説明】
TWAINソースドライバをクローズします。
Active := Falseと同等です
【宣言】
function Select: Boolean;
【戻値】
True 選択成功 False 選択失敗、またはユーザーがキャンセルした
【説明】
使用するTWAINソースデバイスを選択します。
【宣言】
function Execute: Boolean;
【戻値】
True スキャン成功 False スキャン失敗
【説明】
スキャンを実行します。 ドライバがオープンされていなければ自動的にオープンされます。
取込んだイメージは Bitmapプロパティに格納されます。
MultiTransferが有効の時には
AfterScanイベントでBitmapプロパティを参照し、
必要があれば待避して下さい。
【宣言】
procedure Reset;
【説明】
プロパティ値をTWAINドライバのデフォルト値に設定します。 オープンされていない時には、標準的な値に設定されます。
【宣言】
procedure Abort;
【説明】
実行中のスキャンを中止します。
【宣言】
procedure ApplySettings;
【説明】
プロパティの変更値をTWAINドライバに通知します。
Executeメソッドを実行すると内部で自動的に、ApplySettingsが呼ばれます。
Executeを実行する前に、変更内容が確認したいときに使用します。
【宣言】
procedure SetBounds(aLeft, aTop, aWidth, aHeight: Single);
【説明】
イメージの取込み範囲を設定します。 FrameLeft := aLeft; FrameTop := aTop; FrameWidth := aWidth FrameHeight := aHeight と同等です。
【宣言】
【説明】
ユニット単位の値をTwips単位に変換します。
【宣言】
【説明】
Twips単位の値をユニット単位に変換します。
【宣言】
【説明】
取込んだイメージ(Bitmapプロパティ)の縦横比を維持したまま描画します。
【宣言】
property OnActivate: TNotifyEvent;
【説明】
TWAINソースデバイスが 開かれる時に発生します。
【宣言】
property OnDeactivate: TNotifyEvent;
【説明】
TWAINソースデバイスが 閉じられる時に発生します。
【宣言】
property OnBeforeScan: TBeforeScanEvent;
TBeforeScanEvent = procedure(Sender: TObject; ImageInfo:
TScanImageInfo
var Cancel: Boolean) of object;
【説明】
イメージの取込み前に発生します。
【引数】
ImageInfo: TScanImageInfo; 取込もうとするイメージの情報が入っています。 Cancel: Boolean; Trueを設定すると取込みを中止します。
【宣言】
property OnAfter: TAfterScanEvent;
TAfterScanEvent = procedure(Sender: TObject; Bitmap: TBitmap;
var Cancel: Boolean) of object;
【説明】
一枚イメージを取込むたびに、発生します。 取込んだイメージはBitmapに格納されています。
【引数】
Bitmap: TBitmap; 取込んだイメージが入っています。必要であれば保存して下さい。 Cancel: Boolean; Trueを設定すると取込みを中止します。 (初期値 False)
【宣言】
EScanner = class(EException)
【説明】
TScannerで発生する例外の基本クラスです。
【宣言】
EScannerWarning = class(EScanner)
【説明】
警告レベルの例外です。
【宣言】
EScannerFaital = class(EScanner)
【説明】
致命的レベルの例外です。
本コンポーネントはシェアウェアです。
特に使用制限は設けておりませんので、十分に動作検証を行った上で、
ライセンス料をお支払いください。
ライセンス料金は \3,000 です。
支払い方法は,ベクターの
シェアレジ(レジ番号:SR022352)
にてお願いします。
現金書留、銀行振込等を希望される方は、メールにてお問い合わせください。
ソースファイルをご希望の方は、有償にて提供いたします。メールにてご相談ください。
本プログラム および マニュアルの著作権は作者である 藤山 隆将 が保有しています。
本プログラムを使用した結果により、いかなる不具合が発生しようとも
著作権者は責任をおいません。
また発生した不具合を修正する義務を生じません。
再配布は、次の条件を満たす限り自由です。
再配布された方は、配布先を作者宛てに連絡(承認では有りません) いただけると幸いです。
サポートは電子メールにより行ないます。
・氏名 藤山 隆将 (フジヤマ タカユキ)
・メールアドレス :
・ホームページ : http://www.tear-drops.net/