LoginSignup
0
0

iPhoneのカメラで1次元バーコードを読み取るには

Posted at

TEST

iPhoneのカメラで1次元バーコードを読み取るには、getUserMedia APIを使用してカメラへのアクセスを許可し、バーコード読み取りライブラリを統合することが必要です。以下は、JavaScriptで1次元バーコードを読み取るための簡単なコードの例です。この例では、Quagga.jsと呼ばれるバーコードスキャナーライブラリを使用します。

まず、HTMLファイルに以下のコードを追加します:

<!DOCTYPE html>
<html>
  <head>
    <title>1D Barcode Scanner</title>
  </head>
  <body>
    <video id="scanner" autoplay></video>
    <script src="https://cdn.rawgit.com/serratus/quaggaJS/0.12.1/dist/quagga.min.js"></script>
    <script src="https://cdn.rawgit.com/serratus/quaggaJS/0.12.1/dist/adapter.js"></script>
    <script src="https://cdn.rawgit.com/serratus/quaggaJS/0.12.1/dist/live_w_locator.js"></script>
    <script src="https://cdn.rawgit.com/serratus/quaggaJS/0.12.1/dist/live_w_locator.debug.js"></script>
    <script src="https://cdn.rawgit.com/serratus/quaggaJS/0.12.1/dist/locator.js"></script>
    <script src="https://cdn.rawgit.com/serratus/quaggaJS/0.12.1/dist/fallbacks.js"></script>
  </body>
</html>

次に、JavaScriptコードを追加します:

// ページの読み込みが完了したら実行
document.addEventListener("DOMContentLoaded", function () {
  if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
    // カメラへのアクセスを要求
    navigator.mediaDevices
      .getUserMedia({ video: true })
      .then(function (stream) {
        // カメラからの映像を<video>要素に表示
        var video = document.querySelector("#scanner");
        video.srcObject = stream;

        // Quagga.jsを初期化
        Quagga.init(
          {
            inputStream: {
              name: "Live",
              type: "LiveStream",
              target: video,
            },
            decoder: {
              readers: ["code_128_reader"],
            },
          },
          function (err) {
            if (err) {
              console.error(err);
              return;
            }
            Quagga.start();
          }
        );

        // バーコードが読み取られたときの処理
        Quagga.onProcessed(function (result) {
          var drawingCtx = Quagga.canvas.ctx.overlay;
          var drawingCanvas = Quagga.canvas.dom.overlay;

          if (result) {
            if (result.boxes) {
              drawingCtx.clearRect(0, 0, parseInt(drawingCanvas.getAttribute("width")), parseInt(drawingCanvas.getAttribute("height")));
              result.boxes.filter(function (box) {
                return box !== result.box;
              }).forEach(function (box) {
                Quagga.ImageDebug.drawPath(box, { x: 0, y: 1 }, drawingCtx, {
                  color: "green",
                  lineWidth: 2,
                });
              });
            }

            if (result.box) {
              Quagga.ImageDebug.drawPath(result.box, { x: 0, y: 1 }, drawingCtx, {
                color: "#00F",
                lineWidth: 2,
              });
            }

            if (result.codeResult && result.codeResult.code) {
              console.log("バーコード内容: " + result.codeResult.code);
              Quagga.stop();
            }
          }
        });
      })
      .catch(function (err) {
        console.error("カメラへのアクセスに失敗しました: " + err);
      });
  }
});

このコードでは、カメラへのアクセスを要求し、Quagga.jsを使用してバーコードを読み取ります。バーコードが読み取られると、コンソールに内容が表示されます。必要に応じて、バーコードを読み取った後の処理をカスタマイズできます。

注意: セキュリティ設定とブラウザの設定によって、カメラへのアクセス許可が必要な場合があります。また、Quagga.jsの最新のバージョンを使用する場合、リンクを更新する必要があるかもしれません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0