Jumat, Maret 21, 2025

JavaScript untuk scan kode QR

Implementasi JavaScript untuk memindai kode QR menggunakan library jsQR dan WebRTC untuk mengakses kamera:

HTML:

HTML
<!DOCTYPE html>
<html>
<head>
    <title>Pemindai Kode QR</title>
</head>
<body>
    <video id="preview" width="300" height="225"></video>
    <canvas id="canvas" style="display:none;"></canvas>
    <p id="result"></p>

    <script src="https://cdn.jsdelivr.net/npm/jsqr@1.4.0/dist/jsQR.js"></script>
    <script src="script.js"></script>
</body>
</html>

JavaScript (script.js):

JavaScript
const video = document.getElementById('preview');
const canvas = document.getElementById('canvas');
const resultElement = document.getElementById('result');
const canvasContext = canvas.getContext('2d');

navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' } })
    .then(function(stream) {
        video.srcObject = stream;
        video.setAttribute('playsinline', true); // Diperlukan untuk iOS
        video.play();
        requestAnimationFrame(tick);
    })
    .catch(function(err) {
        console.error('Tidak dapat mengakses kamera:', err);
        resultElement.textContent = 'Tidak dapat mengakses kamera.';
    });

function tick() {
    if (video.readyState === video.HAVE_ENOUGH_DATA) {
        canvas.height = video.videoHeight;
        canvas.width = video.videoWidth;
        canvasContext.drawImage(video, 0, 0, canvas.width, canvas.height);
        const imageData = canvasContext.getImageData(0, 0, canvas.width, canvas.height);
        const code = jsQR(imageData.data, imageData.width, imageData.height, {
            inversionAttempts: 'dontInvert',
        });
        if (code) {
            resultElement.textContent = 'Hasil: ' + code.data;
        } else {
            resultElement.textContent = 'Posisikan kode QR di depan kamera.';
        }
    }
    requestAnimationFrame(tick);
}

Penjelasan:

  1. HTML:
    • <video>: Menampilkan video dari kamera.
    • <canvas>: Digunakan untuk mengambil gambar dari video.
    • <p>: Menampilkan hasil pemindaian.
    • Menambahkan pustaka jsQR dari CDN.
    • Menambahkan file script.js.
  2. JavaScript:
    • Mengakses elemen HTML.
    • Menggunakan navigator.mediaDevices.getUserMedia() untuk mengakses kamera.
    • Menampilkan video dari kamera di elemen <video>.
    • Fungsi tick() dipanggil secara berulang menggunakan requestAnimationFrame().
    • Di dalam tick(), gambar dari video diambil menggunakan <canvas>.
    • jsQR() digunakan untuk memindai kode QR dari gambar.
    • Hasil pemindaian ditampilkan di elemen <p>.

Langkah-langkah:

  1. Simpan kode HTML di atas sebagai file dengan ekstensi .html (misalnya, index.html).
  2. Simpan kode JavaScript di atas sebagai file dengan nama script.js di direktori yang sama dengan file HTML.
  3. Buka file index.html di browser web Anda.
  4. Izinkan akses kamera saat diminta.
  5. Posisikan kode QR di depan kamera.
  6. Hasil pemindaian akan ditampilkan di halaman.

Catatan:

  • Kode ini memerlukan koneksi HTTPS untuk mengakses kamera di beberapa browser.
  • Pustaka jsQR hanya mendukung pemindaian kode QR. Untuk pemindaian barcode lainnya, Anda mungkin perlu menggunakan pustaka lain.
  • Beberapa perangkat mungkin memerlukan penyesuaian untuk mendapatkan kinerja pemindaian yang optimal.

Tidak ada komentar:

Posting Komentar

PHP Google Drive

https://g.co/gemini/share/4ec33b801d4a   Tentu, saya akan membantu Anda membuat kode PHP menggunakan Composer untuk melakukan sinkronisasi (...