TScanner
TWAIN Scanner Control for Delphi 5,6
User's Manual

Copyright© 2001-2005 T.Fujiyama All Rights Reserved.

目次

  1. はじめに
    1. 動作検証済み機器
    2. インストール
  2. 使い方
    1. 最も簡単な使い方
    2. 高度な使い方
  3. 構造体,列挙型
  4. プロパティ
    1. 動作
    2. イメージ関係
    3. 取込みサイズ
    4. フィーダー
    5. その他
  5. メソッド
  6. イベント
  7. 例外
  8. おわりに
    1. シェアウェア登録
    2. 著作権
    3. 免責
    4. 再配布
    5. サポート連絡先
  9. 第1章 はじめに

    TWAINとは TWAIN Working Groupという 団体が標準化した、画像入力機器とパソコンを接続するための技術仕様です。

    TScannerコンポーネントはTWAINドライバを介してスキャナーや、デジカメなどから 画像を取得する Borland Delphi用のコンポーネントです。

    Top

    1.1 動作検証済み機器

    メーカー名機種名
    スキャナ Cannon CanoScan 600
    UMAX Astra 600
    デジカメ FujiFilm FinePix500 + インターフェースバリューキット
    Top

    1.2 インストール

    TScanner はパッケージとして提供されます。次の手順にてインストールを行って ください。

    1. Scan50.LZH をディレクトリ付で任意のディレクトリに解凍します。
    2. "TScanner\vclscan50.bpl" をパスの通ったディレクトリ (C:\Program Files\Borland\Delphi5\Bin 又は C:\Windows\System 等) にコピーします。
    3. 「コンポーネント」−「パッケージのインストール」を選択
    4. 設計時パッケージの「追加」を選択
    5. "dclscan50.bpl"を選択して、「開く」を選択
    6. 設計時パッケージに "TWAIN Scanner Control Components" が追加されます。
      コンポーネントパレットには "Scanner" のページにコンポーネントが追加されます。
    ファイル構成
    ディレクトリ ファイル名 内容
    TScanner readme.1st はじめにお読みください
    tscanner.html マニュアル(このファイル)
    vscan50.bpl 実行時パッケージ
    dclscan50.bpl 設計時パッケージ
    sample1 簡単なサンプル
    sample2 高度なサンプル

    上記ファイル名とフォルダ名は Delphi5用の名称です。 Delphi6用はそれぞれ scan60.lzh, vclscan60.bpl, dclscan60.bpl, Delphi6 と読み替えて下さい。

    第2章 使い方

    Top

    2.1 最も簡単な使い方

    1. 新規アプリケーションを作成します。
    2. TScanner コンポーネントを貼り付けます。
    3. TImage コンポーネントを貼り付け、Strech プロパティと Center プロパティを True にします。
    4. TButton コンポーネントを貼り付けます。
    5. TButton コンポーネントの OnClick イベントに次のコードを記述します。
        procedure TForm1.Button1Click(Sender: TObject);
        begin
          if Scanner1.Execute then
            Scanner1.DrawFixedAspect(Image1);
        end;
            
    6. 実行します。
    Top

    2.2 高度な使い方

    Sample2 のディレクトリに高度な使い方をしたサンプルプロジェクトがあります ので、ソースを参照してください。

    第3章 構造体,列挙型

    Top

    TScanPoint

    【宣言】

    TScanPoint = record
      X: Single;
      Y: Single;
    end;
    

    【説明】

    TPointのSingle版です。

    Top

    TScanRect

    【宣言】

    TscanRect = record
      case Integer of
        0:  (Left, Top, Right, Bottom: Single);
        1:  (TopLeft, BottomRight: TScanPoint);
    end;
    

    【説明】

    TRectの Single版です。

    Top

    TScanRange

    【宣言】

    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 現在の設定値を返します。
    Top

    TScanUnitMode, TScanUnitModes

    【宣言】

    TScanUnitMode = ( umInch, umCm, umPica, umPoint, umTwips, umPixel );
    TScanUnitModes = set of TScanUnitMode;
    

    【説明】

    イメージの取込み単位を指定します。 UnitModeは取込み範囲と解像度に影響します。

    説明
    umInch インチ単位
    umCm センチメートル単位
    umPica パイカ単位
    umPoint ポイント単位
    umTwips Twips単位
    umPixel Pixel単位

    * umPica, umPoint, umTwipsの単位をサポートしているTWAINドライバを使用した ことが無いので、これらの単位で実機テストは行なわれていません。

    Top

    TScanPixelType, TScanPixelTypes

    【宣言】

    TScanPixelType = ( ptBlackWhite, ptGray, ptRGB, ptPalette, ptCMY, ptCMYK, ptYUV, ptYUVK, ptCIEXYZ  );
    TScanPixelTypes = set of TScanPixelType;
    

    【説明】

    取込むイメージの種類を指定します。

    説明
    ptBlackWhite 白黒2値
    ptGray 白黒グレースケール
    ptRGB RGBカラー
    ptPalette パレットカラー

    * 上記以外のPixelTypeはサポートしていません。

    Top

    TScanPaperSize

    【宣言】

    TScanPaperSize = ( psCustom, psA5, psA4, psA3, psB5, psB4, psLetter, psPostCard );
    

    【説明】

    取込むイメージサイズを指定します。

    説明
    psCustom カスタムサイズ
    psA5 A5サイズ
    psA4 A4サイズ
    psA3 A3サイズ
    psB5 B5サイズ
    psB4 B4サイズ
    fpsLetter Letterサイズ
    psPostCard 官製はがきサイズ
    Top

    TScannerCap, TScannerCaps

    【宣言】

    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 フレームサイズの変更
    Top

    TScanImageInfo

    【宣言】

    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に関係なく常にピクセル単位の値が格納されていました。

    Top

    TScanSourceInfo

    【宣言】

    TScanSourceInfo = record
      VersionMajor: Integer;
      VersionMinor: Integer;
      VersionInfo:  String;
      Manufacturer: String;
      ProductFamily: String;
      ProductName: String;
      end;
    

    【説明】

    TWAINデータソースの情報を格納します。

    メンバー 説明
    VersionMajor バージョンメジャー番号
    VersionMinor バージョンマイナー番号
    VersionInfo バージョン情報
    Manufacturer 製造者名
    ProductFamily 製品ファミリー名
    ProductName 製品名

    第4章 プロパティ

    Top

    4.1 動作

    Top

    Active

    【宣言】

    property Active: Boolean default False;
    

    【説明】

    TWAINデバイスの有効、無効を設定します。 また現在の状態を取得することもできます。
    Active := True は Openメソッドと同等です。
    Active := FalseはCloseメソッドと同等です。

    Top

    Caps

    【宣言】

    property Caps: TScannerCaps;

    【説明】

    TWAINデバイスがサポートしている機能を返します。

    Top

    MultiTransfer

    【宣言】

    property MultiTransfer: Boolean default False;
    

    【説明】

    連続取込みを有効にします。
    MultiTransferがFalseになっていると、一枚イメージを取込むと自動的にTWAINドライバーが閉じられます。

    Top

    ShowUI

    【宣言】

    property ShowUI: Boolean default True;
    

    【説明】

    ユーザーインターフェース画面を表示するかどうかを指定します。

    Top

    ShowIndicator

    【宣言】

    property ShowIndicator: Boolean default True;
    

    【説明】

    取込み中のインジケータ表示を行なうかどうかを指定します。

    Top

    SourceName

    【宣言】

    property SourceName: String;
    

    【説明】

    使用するTWAINソースデバイスの名称を設定します。
    また、デバイスをオープンした時には、そのデバイス名が設定されます。

    Top

    SourceNames

    【宣言】

    property SourceNames: TStrings; (readonly)
    

    【説明】

    インストールされているTWAINソースデバイスの名称を返します。

    Top

    UseDefaultSource

    【宣言】

    property UseDefaultSource: Boolean default False;
    

    【説明】

    デバイスのオープン時にデフォルトのTWAINソースデバイスを使用するか指定します。
    Trueに設定されていると、デフォルトのTWAINソースデバイスが使用されます。
    Falseに設定されていると、デバイスの選択画面が表示されて、使用するデバイスを選択します。

    Top

    UseCurrentValue

    【宣言】

    property UseCurrentValue: Boolean default True;
    

    【説明】

    デバイスのオープン時にTWAINソースデバイスが保持している設定値を使用するかどうかを指定します。
    Trueに設定すると、プロパティの値は無視されてデバイスの設定値を使用します。
    Falseに設定すると、プロパティの値をデバイスに設定します。

    Top

    4.2 イメージ関係

    Top

    Bitmap

    【宣言】

    property Bitmap: TBitmap;
    

    【説明】

    取り込んだイメージが保持されます。

    Top

    PixelType

    【宣言】

    property PixelType: TScanPixelType;  default ptRGB;
    

    【説明】

    取込むイメージのピクセルタイプを設定・取得します。
    どのPixelTypeがサポートされているかは PixelTypesプロパティを参照します。

    Top

    PixelTypes

    【宣言】

    property PixelType: TScanPixelTypes;
    

    【説明】

    スキャナーがサポートしているピクセルタイプを取得します。

    Top

    BitDepth

    【宣言】

    property BitDepth: Integer;     default 24
    

    【説明】

    ビット深度を設定・取得します。

    TWAINドライバーによっては PixelTypeがptRGBの時にBitDepthに1を代入すると、 自動的に PixelTypeが ptBloackWhiteに変更されるものや、 PixelTypeが優先されてBitDepthが無視されるものなど、 ドライバによって動作が変わります。

    Top

    Resolution

    【宣言】

    property Resolution: TScanRange;
    

    【説明】

    解像度を指定します。

    UnitModeの単位で指定しますので DPIで指定するには UnitModeが umInchに 設定されている必要があります。

    Top

    Scaling

    【宣言】

    property Scaling: TScanRange;
    

    【説明】

    倍率を指定します。

    Top

    AutoBright

    【宣言】

    property AutoBright: Boolean;         default True;
    

    【説明】

    解像度を指定します。

    自動でブライトネスを調整します。

    Top

    Brightness

    【宣言】

    property Brightness: TScanRange;
    

    【説明】

    ブライトネスを調整します。

    ptBlackWhite以外のイメージが対象になります。

    Top

    Contrast

    【宣言】

    property Contrast: TScanRange;
    

    【説明】

    コントラストを調整します。

    ptRGB, ptPaletteのイメージが対象になります。

    Top

    Gamma

    【宣言】

    property Gamma: TScanRange;
    

    【説明】

    ガンマを調整します。

    ptBlackWhite以外のイメージが対象になります。

    Top

    Highlight

    【宣言】

    property Highlight: TScanRange;
    

    【説明】

    ハイライトを調整します。

    ptBlackWhite以外のイメージが対象になります。

    Top

    Shadow

    【宣言】

    property Shadow: TScanRange;
    

    【説明】

    シャドウを調整します。

    ptBlackWhite以外のイメージが対象になります。

    Top

    Threshold

    【宣言】

    property Threshold: TScanRange;
    

    【説明】

    中間値を調整します。

    ptBlackWhiteのイメージが対象になります。

    Top

    XNativeResolution

    【宣言】

    property XNativeResolution: Single;   (Readonly, Active時のみ)
    

    【説明】

    スキャナーのX方向の実解像度を取得します。

    Top

    YNativeResolution

    【宣言】

    property YNativeResolution: Single;   (Readonly, Active時のみ)
    

    【説明】

    スキャナーのY方向の実解像度を取得します。

    Top

    4.3 取込みサイズ

    Top

    UnitMode

    【宣言】

    property UnitMode: TScanUnitMode;    default umInch;
    

    【説明】

    取込みサイズの単位を設定します。 UnitModeは取込みサイズ、解像度に影響します。

    Top

    UnitModes

    【宣言】

    property UnitModes: TScanUnitModes;    (Readonly)
    

    【説明】

    スキャナーがサポートしている単位を返します。

    Top

    PaperSize

    【宣言】

    property PaperSize: TScanPaperSize;
    

    【説明】

    取込みサイズを設定します。
    psCustom 以外に設定すると、 FrameLeft, FrameTopは0に、 FrameWidth, FrameHeight はその用紙サイズに設定されます。

    Top

    FrameLeft, FrameTop, FrameWidth, FrameHeight

    【宣言】

    property FrameLeft: Single;
    property FrameTop: Single;
    property FrameWidth: Single;
    property FrameHeight: Single;
    

    【説明】

    取込みサイズを指定します。
    UnitModeの単位で指定して下さい。
    これらのプロパティに値を設定すると PaperSizeプロパティは自動的に psCustomに変更されます。

    Top

    FrameRect

    【宣言】

    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;
    
    Top

    MaxFrameWidth, MaxFrameHeight

    【宣言】

    property MaxFrameWidth: Single;     (ReadOnly)
    property MaxFrameHeight: Single;    (ReadOnly)
    

    【説明】

    サポートしている最大用紙サイズを返します。
    サイズは UnitModeの単位で取得されます。

    Top

    MaxFrameRect

    【宣言】

    property MaxFrameRect: TScanRect;  (ReadOnly)
    

    【説明】

    サポートしている最大用紙サイズを TScanRect型で返します。
    サイズは UnitModeの単位で取得されます。

    次のコードは
        R := MaxFrameRect;
    
    次のコードと同等です。
        R.Left := 0;
        R.Top := 0;
        R.Right := MaxFrameWidth;
        R.Bottom := MaxFrameHeight;
    
    Top

    4.4 フィーダー

    ※注意 ドキュメントフィーダー付のスキャナーでの実機テストは行っていません。 フィーダーをお持ちの方のレポートをお待ちしております。

    Top

    HasFeeder

    【宣言】

    property HasFeeder: Boolean;          (ReadOnly, Active時のみ)
    

    【説明】

    スキャナーがドキュメントフィーダーを持っているかを表します。

    Top

    FeederEnabled

    【宣言】

    property FeederEnabled: Boolean;
    

    【説明】

    ドキュメントフィーダー有効にするかどうかを指定します。

    Top

    AutoFeedEnabled

    【宣言】

    property AutoFeedEnabled: Boolean;
    

    【説明】

    自動フィードを有効にするかどうかを指定します。

    Top

    FeederLoaded

    【宣言】

    property FeederLoaded: Boolean;      (ReadOnly)
    

    【説明】

    フィーダーにドキュメントがロードされると、Trueになります。

    Top

    4.5 その他

    Top

    ScanSourceInfo

    【宣言】

    property ScanSourceInfo: TScanSourceInfo;    (Readonly)
    

    【説明】

    TWAINデータソースの情報が得られます。

    Top

    Version

    【宣言】

    property Version: String;      (ReadOnly)
    

    【説明】

    TScannerコンポーネントのバージョン情報を返します。

    第5章 メソッド

    Top

    Create

    【宣言】

    constructor Create(AOwner: TComponent);
    

    【説明】

    Create メソッドを呼び出すと,TScannerをインスタンス化できます。

    Top

    Open

    【宣言】

    function Open: Boolean;

    【戻値】

    True    オープン成功
    False オープン失敗

    【説明】

    TWAINソースドライバをオープンします。
    Active := Trueと同等です。

    Top

    Close

    【宣言】

    function Close: Boolean;
    

    【戻値】

    True クローズ成功
    False クローズ失敗

    【説明】

    TWAINソースドライバをクローズします。
    Active := Falseと同等です

    Top

    Select

    【宣言】

    function Select: Boolean;
    

    【戻値】

    True    選択成功
    False   選択失敗、またはユーザーがキャンセルした
    

    【説明】

    使用するTWAINソースデバイスを選択します。

    Top

    Execute

    【宣言】

    function Execute: Boolean;
    

    【戻値】

    True    スキャン成功
    False   スキャン失敗
    

    【説明】

    スキャンを実行します。 ドライバがオープンされていなければ自動的にオープンされます。 取込んだイメージは Bitmapプロパティに格納されます。
    MultiTransferが有効の時には AfterScanイベントでBitmapプロパティを参照し、 必要があれば待避して下さい。

    Top

    Reset

    【宣言】

    procedure Reset;
    

    【説明】

    プロパティ値をTWAINドライバのデフォルト値に設定します。 オープンされていない時には、標準的な値に設定されます。

    Top

    Abort

    【宣言】

    procedure Abort;
    

    【説明】

    実行中のスキャンを中止します。

    Top

    ApplySettings

    【宣言】

    procedure ApplySettings;
    

    【説明】

    プロパティの変更値をTWAINドライバに通知します。

    Executeメソッドを実行すると内部で自動的に、ApplySettingsが呼ばれます。 Executeを実行する前に、変更内容が確認したいときに使用します。

    Top

    SetBounds

    【宣言】

    procedure SetBounds(aLeft, aTop, aWidth, aHeight: Single);
    

    【説明】

    イメージの取込み範囲を設定します。 FrameLeft := aLeft; FrameTop := aTop; FrameWidth := aWidth FrameHeight := aHeight と同等です。

    Top

    UnitToTwips

    【宣言】

    1. function UnitToTwips(Value: Single): Single; overload;
    2. function UnitToTwips(R: TScanRect): TScanRect; overload;

    【説明】

    ユニット単位の値をTwips単位に変換します。

    Top

    TwipsToUnit

    【宣言】

    1. function TwipsToUnit(Value: Single): Single; overload;
    2. function TwipsToUnit(R: TScanRect): TScanRect; overload;

    【説明】

    Twips単位の値をユニット単位に変換します。

    Top

    DrawFixedAspect

    【宣言】

    1. procedure DrawFixedAspect(Canvas: TCanvas; Rect: TRect; Center: Boolean = True); overload;
    2. procedure DrawFixedAspect(Image: TImage); overload;

    【説明】

    取込んだイメージ(Bitmapプロパティ)の縦横比を維持したまま描画します。

    1. CanvsのRectの範囲内に縦横比を維持して描画します。
      余白部分は Canvas.Brushで塗りつぶされます。
      CenterがTrueだと範囲の中央に描画されます。 Falseの場合範囲の左上に描画されます。
    2. ImageのCanvasに縦横比を維持して描画します。
      余白部分は Image.Canvas.Brushで塗りつぶされます。
      Image.Center=Trueの時にはImageの中央に、Falseの時には左上に描画されます。
      Image.AutoSize=True 又は Image.Strech=Falseの場合には Image.Picture.Assign ( Bitmap )と変わりません。

    第6章 イベント

    Top

    OnActivate

    【宣言】

    property OnActivate: TNotifyEvent;
    

    【説明】

    TWAINソースデバイスが 開かれる時に発生します。

    Top

    OnDeactivate

    【宣言】

    property OnDeactivate: TNotifyEvent;
    

    【説明】

    TWAINソースデバイスが 閉じられる時に発生します。

    Top

    OnBeforeScan

    【宣言】

    property OnBeforeScan: TBeforeScanEvent;

    TBeforeScanEvent = procedure(Sender: TObject; ImageInfo: TScanImageInfo var Cancel: Boolean) of object;

    【説明】

    イメージの取込み前に発生します。

    【引数】

    ImageInfo: TScanImageInfo;    取込もうとするイメージの情報が入っています。
    Cancel: Boolean;              Trueを設定すると取込みを中止します。
    
    Top

    OnAfterScan

    【宣言】

    property OnAfter: TAfterScanEvent;

    TAfterScanEvent = procedure(Sender: TObject; Bitmap: TBitmap; var Cancel: Boolean) of object;

    【説明】

    一枚イメージを取込むたびに、発生します。 取込んだイメージはBitmapに格納されています。

    【引数】

    Bitmap: TBitmap;    取込んだイメージが入っています。必要であれば保存して下さい。
    Cancel: Boolean;    Trueを設定すると取込みを中止します。 (初期値 False)
    

    第7章 例外

    Top

    EScanner

    【宣言】

    EScanner = class(EException)
    

    【説明】

    TScannerで発生する例外の基本クラスです。

    Top

    EScannerWarning

    【宣言】

    EScannerWarning = class(EScanner)
    

    【説明】

    警告レベルの例外です。

    Top

    EScannerFaital

    【宣言】

    EScannerFaital = class(EScanner)
    

    【説明】

    致命的レベルの例外です。

    第8章 おわりに

    Top

    8.1 シェアウェア登録

    本コンポーネントはシェアウェアです。
    特に使用制限は設けておりませんので、十分に動作検証を行った上で、 ライセンス料をお支払いください。

    ライセンス料金は \3,000 です。
    支払い方法は,ベクター シェアレジ(レジ番号:SR022352) にてお願いします。
    現金書留、銀行振込等を希望される方は、メールにてお問い合わせください。

    ソースファイルをご希望の方は、有償にて提供いたします。メールにてご相談ください。

    Top

    8.2 著作権

    本プログラム および マニュアルの著作権は作者である 藤山 隆将 が保有しています。

    Top

    8.3 免責

    本プログラムを使用した結果により、いかなる不具合が発生しようとも 著作権者は責任をおいません。
    また発生した不具合を修正する義務を生じません。

    Top

    8.4 再配布

    再配布は、次の条件を満たす限り自由です。

    1. 著作権表示を変更しないこと
    2. 再配布にあたり実費以外の費用を要求しないこと
    3. アーカイブに含まれるファイルをそのままの形で配布すること
    4. バージョンアップされた時には、可能な限り最新版を配布すること

    再配布された方は、配布先を作者宛てに連絡(承認では有りません) いただけると幸いです。

    Top

    8.5 サポート連絡先

    サポートは電子メールにより行ないます。
    ・氏名 藤山 隆将 (フジヤマ タカユキ)
    ・メールアドレス : mail address
    ・ホームページ : http://www.tear-drops.net/

    Top