답변 4개
채택된 답변
+20 포인트
미니님a
Expert
1년 전
제가 사용한 원본 코드입니다.
잘 안되신다면 제 코드로 해보시길 바랍니다.
</p>
<p><!DOCTYPE html></p>
<p><html lang="en"></p>
<p><head></p>
<p> <meta charset="UTF-8"></p>
<p> <meta name="viewport" content="width=device-width, initial-scale=1.0"></p>
<p> <title>QuaggaJS Barcode Scanner</title></p>
<p> <style></p>
<p> #interactive {</p>
<p> position: relative;</p>
<p> width: 100%;</p>
<p> height: auto;</p>
<p> }</p>
<p> #interactive video {</p>
<p> width: 100%;</p>
<p> height: auto;</p>
<p> }</p>
<p> #result {</p>
<p> position: absolute;</p>
<p> top: 10px;</p>
<p> left: 10px;</p>
<p> background: rgba(0, 0, 0, 0.5);</p>
<p> color: #fff;</p>
<p> padding: 5px;</p>
<p> }</p>
<p> </style></p>
<p></head></p>
<p><body></p>
<p> <p>스캔</p></p>
<p> <div id="interactive" class="viewport"></p>
<p> <video autoplay></video></p>
<p> <div id="result">Scanning...</div></p>
<p> </div></p>
<p> <script src="<a href="https://cdnjs.cloudflare.com/ajax/libs/quagga/0.12.1/quagga.min.js"></script>" target="_blank" rel="noopener noreferrer">https://cdnjs.cloudflare.com/ajax/libs/quagga/0.12.1/quagga.min.js"></script></a></p>
<p> <script></p>
<p> document.addEventListener('DOMContentLoaded', function () {</p>
<p> var resultElement = document.getElementById('result');</p>
<p> </p>
<p> Quagga.init({</p>
<p> inputStream: {</p>
<p> name: "Live",</p>
<p> type: "LiveStream",</p>
<p> target: document.querySelector('#interactive'), // 이 요소에 비디오 스트림을 렌더링합니다.</p>
<p> constraints: {</p>
<p> width: 640,</p>
<p> height: 480,</p>
<p> facingMode: "environment" // 후면 카메라 사용</p>
<p> },</p>
<p> },</p>
<p> decoder: {</p>
<p> readers: ["code_128_reader", "ean_reader", "ean_8_reader", "code_39_reader", "code_39_vin_reader", "codabar_reader", "upc_reader", "upc_e_reader", "i2of5_reader"] // 지원하는 바코드 형식</p>
<p> },</p>
<p> }, function (err) {</p>
<p> if (err) {</p>
<p> console.log(err);</p>
<p> return;</p>
<p> }</p>
<p> console.log("Initialization finished. Ready to start");</p>
<p> Quagga.start();</p>
<p> });</p>
<p> </p>
<p> Quagga.onDetected(function (data) {</p>
<p> var code = data.codeResult.code;</p>
<p> resultElement.textContent = `Scanned code: ${code}`;</p>
<p> console.log(`Scanned code: ${code}`);</p>
<p> });</p>
<p>});</p>
<p> </script></p>
<p></body></p>
<p></html></p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
�
하틴
1년 전
감사합니다..! 적어주신 코드도 동일하게 튀긴하네요 ㅠㅠ
�
미니님a
1년 전
너무 심하게 움직이지만 않으면 괜찮던데용 ?
�
하틴
1년 전
실제로 상품 입고 하듯이 들고 다니면서 대보니까 좀 불안정한 부분이 있떠라구요 ㅠㅠ
그래도 올려주신 소스가 더 안정적이어서 도움이 많이 됐습니다 감사합니다~!
그래도 올려주신 소스가 더 안정적이어서 도움이 많이 됐습니다 감사합니다~!
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
�
하틴
1년 전
오오..감사합니다 혹시 바코드를 좀 움직여도 정상적으로 읽어지시나요?
제가 아래 답변으로 새로 이미지 등록했는데 이게 조금만 움직이거나 틀면 저런식으로 주르륵 나오던데 그렇진 않으신가요?
제가 아래 답변으로 새로 이미지 등록했는데 이게 조금만 움직이거나 틀면 저런식으로 주르륵 나오던데 그렇진 않으신가요?
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
�
하틴
1년 전
와..이런게 있군요..ㄷㄷㄷ 감사합니다!
그런데 샘플소스로 테스트를 해봤는데 같은 바코드인데 인식이 중구난방으로 되는데 이부분은 개선이 가능한 부분일까요?;;
<ul id="barcode-list"></ul>
<script>
window.onload = () => {
detect();
};
async function detect() {
const barcodeDetector = new BarcodeDetector();
const list = document.getElementById("barcode-list");
let itemsFound = [];
const mediaStream = await navigator.mediaDevices.getUserMedia({
video: { facingMode: "environment" }
});
const video = document.createElement("video");
video.srcObject = mediaStream;
video.autoplay = true;
list.before(video);
function render() {
barcodeDetector
.detect(video)
.then((barcodes) => {
barcodes.forEach((barcode) => {
if (!itemsFound.includes(barcode.rawValue)) {
itemsFound.push(barcode.rawValue);
const li = document.createElement("li");
li.innerHTML = barcode.rawValue;
list.appendChild(li);
}
});
})
.catch(console.error);
}
(function renderLoop() {
requestAnimationFrame(renderLoop);
render();
})();
}
</script>
그런데 샘플소스로 테스트를 해봤는데 같은 바코드인데 인식이 중구난방으로 되는데 이부분은 개선이 가능한 부분일까요?;;
<ul id="barcode-list"></ul>
<script>
window.onload = () => {
detect();
};
async function detect() {
const barcodeDetector = new BarcodeDetector();
const list = document.getElementById("barcode-list");
let itemsFound = [];
const mediaStream = await navigator.mediaDevices.getUserMedia({
video: { facingMode: "environment" }
});
const video = document.createElement("video");
video.srcObject = mediaStream;
video.autoplay = true;
list.before(video);
function render() {
barcodeDetector
.detect(video)
.then((barcodes) => {
barcodes.forEach((barcode) => {
if (!itemsFound.includes(barcode.rawValue)) {
itemsFound.push(barcode.rawValue);
const li = document.createElement("li");
li.innerHTML = barcode.rawValue;
list.appendChild(li);
}
});
})
.catch(console.error);
}
(function renderLoop() {
requestAnimationFrame(renderLoop);
render();
})();
}
</script>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인