トップへ(mam-mam.net/)

ZXing.DelphiでQRコードやCode39バーコードを読む(FMX) ~Delphiソースコード集

検索:

ZXing.DelphiでQRコードやCode39バーコードを読む(FMX) ~Delphiソースコード集

ZXing.Delphi(https://github.com/Spelt/ZXing.Delphi)を使うと画像から
QRコードやCode39バーコードなどの画像をスキャンして文字に変換することができます。

ZXing.Delphiダウンロード

https://github.com/Spelt/ZXing.Delphi
から「Code」⇒「Download Zip」をクリックして「ZXing.Delphi-v_3.0.zip」ファイルをダウンロードします。
ダウンロードしたファイルを解凍しておきます。


    

プロジェクト作成

Delphi IDEを起動したら[ファイル]⇒[新規作成]⇒[マルチデバイス アプリケーション -Delphi]⇒[空のアプリケーション]をクリックして新規プロジェクトを作成します。
すべて保存ボタンを押して、
..\ドキュメント\Enbarcadero\Studio\Projects
に[新しいフォルダー]ボタンを押して「Fmx_ZXing」等のプロジェクト保存用のフォルダを作成します。
プロジェクト保存用フォルダ内にユニット「Unit1.pas」で保存し、プロジェクト「Project1.dproj」で保存します。

「ZXing.Delphi-v_3.0.zip」ファイルを解凍した中にある「Lib」フォルダを プロジェクトフォルダ「..\ドキュメント\Enbarcadero\Studio\Projects\Fmx_ZXing」にフォルダごとコピーします。

プロジェクトの設定

[プロジェクト]⇒[オプション]をクリックします。

  1. 左ペインで[Delphi コンパイラ]を選択します
  2. ターゲットで[全ての構成]を選択します
  3. [検索パス」に以下を入れます
    Lib\Classes;Lib\Classes\Common;Lib\Classes\Common\Detector;Lib\Classes\Common\ReedSolomon;Lib\Classes\Filtering;Lib\Classes\1D Barcodes;Lib\Classes\2D Barcodes;Lib\Classes\2D Barcodes\Decoder;Lib\Classes\2D Barcodes\Detector
  4. 追加したら[保存]ボタンをクリックします。
Delphi IDE 画面設計(コンポーネントの配置)

画面設計

フォームにTButtonとTEditとTImageとTOpenDialogをドラッグドロップします。

Delphi IDE 画面設計(コンポーネントの配置)

ソースコード

Button1をダブルクリックしてソースコードを入力します。

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects,
  FMX.Edit, FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Image1: TImage;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
  private
    { private 宣言 }
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

uses ZXing.ReadResult,
     ZXing.BarCodeFormat,
     ZXing.ScanManager;

procedure TForm1.Button1Click(Sender: TObject);
var bmp:TBitmap;
    ScanManager:TScanManager;
    ReadResult: TReadResult;
begin
  if not OpenDialog1.Execute then Exit;
  Image1.Bitmap.LoadFromFile(OpenDialog1.FileName);
  bmp:=TBitmap.Create;
  try
    bmp.Assign(Image1.Bitmap);
    ScanManager:=TScanManager.Create(TBarcodeFormat.Auto,nil);
    try
      ReadResult:=ScanManager.Scan(bmp);
      if ReadResult<>nil then
        Edit1.Text:='読み取り成功:'+ReadResult.text
      else
        Edit1.Text:='読み取り失敗';
    finally
      ScanManager.Free;
    end;
  finally
    bmp.Free;
  end;
end;

end.

実行する

アプリケーションをコンパイルして実行します。
Button1をクリックします。
QRコードやCode39バーコードなどが写っている画像ファイルを選択するとスキャンします。

Delphi QRコード、Code39バーコードのスキャン