1

サプライヤから受け取った在庫品目を挿入する Java アプリケーションがあります。製品のバーコード画像を他の情報 (名前、価格など) と共にキャプチャします。byteaのバーコード画像をPostgreSQLデータベースに保存しています。私はまだバーコード スキャナーを持っていないので、バーコード イメージの写真を撮り、次のように挿入しています。

  //code extract
    File imgFile = new File(barcodeImage.jpg);
    FileInputStream fin=new FileInputStream(imgFile);
    pstmt2.setBinaryStream(19, fin,  (int) imgFile.length());  //inserts      into barcodeImage - bytea column

保存したバーコード画像を使用して、データベースから製品を取得したいと考えています。何かのようなもの :

         select * from stock_item where barcodeImage=***

バーコードイメージ(bytea) 列を使用してデータをフィルタリングするにはどうすればよいですか? バーコードスキャナーの仕組みと同じです。

4

2 に答える 2

0

データベースでこれを行うには、ラスター画像 (PNG、JPEG など) からバーコードをデコードできるライブラリが必要であり、それを手続き型言語 (PL/ Python、PL/Perl、C など)。

個人的には、DB でこれを行わないことをお勧めします。作業を外部ヘルパー プロセスのプールに渡します。各ヘルパー プロセスはコード ブロックを分析し、イメージ内に見つかったコード (存在する場合) で DB を更新します。これにより、言語の選択肢が増え、バーコード デコード ソフトウェアなどのクラッシュからデータベースが分離されます。

最初の検索で、バーコード デコード用の Java ライブラリであるzxingが見つかりました。したがって、おそらくそれを PgJDBC で使用して、バーコード イメージを取得し、デコードし、デコードされたバーコードで行を更新する単純なワーカー プロセスを作成します。なんらかの理由で DB でこれを行う必要があった場合は、PL/Java (警告、ここではドラゴン) を使用するか、より適切にサポートされているデータベース内言語用のバーコード デコード ライブラリを見つけます。

WHERE条項で説明されているようにそれを実行しようとすると、まったく絶望的になります。すべてのクエリですべての画像のバーコードをデコードする必要があります。完全に手に負えません。関数インデックスは機能しますが、作成に非常にコストがかかり、バーコード ライブラリなどの更新に直面して維持するのは悪夢です。これを前処理する必要があります。

于 2015-04-22T10:57:51.520 に答える
-1

唯一の方法は、バーコード イメージをスキャンし、コードを varchar として保存することです。私見では

于 2015-04-22T09:56:22.700 に答える