QR ์ฝ๋๋ฅผ ์ค์บํ๋ฉด ์ ๋๋ก ์๋ํฉ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ค๋ฅธ ๋ฐ์ฝ๋ ํ์์ ๋์ฝ๋ฉ์ ์ง์ํ๋์ง ๊ถ๊ธํฉ๋๋ค. ์ ๋ ํนํ Data Matrix ์ฝ๋ ๋์ฝ๋ฉ์ ๊ด์ฌ์ด ์์ต๋๋ค.
๋์ ๋ฐ์ดํฐ ๋งคํธ๋ฆญ์ค๋ฅผ ๋์ฝ๋ฉํ๋๋ก ํต์ฌ ์ฝ๋๋ฅผ ์์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ต๋ณ์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค. ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ณต์์ ์ผ๋ก QR ์ฝ๋ ์ด์ธ์ ๋ค๋ฅธ ๊ฒ์ ์ง์ํ์ง ์์ง๋ง ๋์ผํ ํ๋ ์์์ ์ฌ๋ฌ ํ์๊ณผ ์ฌ๋ฌ ์ฝ๋๋ฅผ ์ง์ํ๋ ๊ฒ์ด ์ฅ๊ธฐ์ ์ธ ๋ชฉํ์ ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํต์ฌ์ ์ฝ๊ฐ์ ํ๋์ผ์ํ์ธ์ ๋๋ค. ZXing Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ C++ ํฌํธ ์ ๋ํ Emscripten JavaScript ๋น๋ ์ ์ํด ๊ตฌ๋๋ฉ๋๋ค.
Emscripten ์์ ๋ฅผ ๋ณด๋ฉด ZXing._decode_qr
(์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉ)์ ZXing._decode_any
๋ฅผ ํธ์ถํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ZXing์ Data Matrix ๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ZXing._decode_any
๋ QR ์ฝ๋, ๋ฐ์ฝ๋, Data Matrix, Aztec ๋ฑ์ ์ธ์ํ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
๊ด๋ จ ํธ์ถ์ scanner.js ์ ์์ต๋๋ค. ๋ถํํ๋ ํ ์คํธํ ์๊ฐ์ด ์์ง๋ง ์๋ํ๋ ค๋ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค.
๊ด์ฐฎ์. ์ฌ์ฉํด๋ณด๊ณ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ด๋ จ ์ฐธ๊ณ ์ฌํญ: ๋ฐ๋ชจ ์น ์ฌ์ดํธ๊ฐ ์๋์ ๋ฉ์ถ ์ด์ ๋ฅผ ์๊ณ ์์ต๋๊น? ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ Error: Cannot access video stream (DevicesNotFoundError).
์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์นด๋ฉ๋ผ ์ก์ธ์ค๊ฐ ์ฐจ๋จ๋์ด ์๊ฑฐ๋ ๊ณผ๊ฑฐ์ ๋ฐ๋ชจ ์ฌ์ดํธ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ฐจ๋จํ ์ ์ด ์์ต๋๊น?
๋ฐ๋ชจ ์ฌ์ดํธ๋ฅผ ์ฒ์ ๋ฐฉ๋ฌธํ ๋ ๋ค์ ๋ฉ์์ง๊ฐ ํ์๋์ด์ผ ํฉ๋๋ค.
์นด๋ฉ๋ผ ์ก์ธ์ค๊ฐ ํ์ฉ๋์ด์ผ ํฉ๋๋ค.
https://github.com/schmich/instascan/blob/master/src/scanner.js#L145 ํ์์ ZXing._decode_qr
๋ฅผ ZXing._decode_any
๋ก ๋ฐ๊ฟ ๋ ๋ชจ๋ ํ์์ด ์ง์๋๋ฏ๋ก ๋ฌธ์ ๋ฅผ ์ข
๋ฃํฉ๋๋ค.
๋น์ ์ ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ด๊ฒ์ ํ ์คํธํ๊ณ ๋ค์ ๋ณด๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๊ธ์ ๋ค๋ฅธ ํ์์ ๋ชจ๋ ์ง์ ํ ์คํธํ์ง ์์๊ธฐ ๋๋ฌธ์ ๊ณต์์ ์ผ๋ก ์ง์ํ๋ ๊ฒ์ด ๋ง์ค์ฌ์ง์ง๋ง, ๋ค์ ํ ๋ฒ ๋ง์๋๋ฆฌ์ง๋ง ์์ผ๋ก๋ ํ์คํ ์ง์ํ๊ณ ์ถ์ต๋๋ค. ์ง๊ธ์ ์ด๊ฒ์ ์ถ์ ํ๊ธฐ ์ํด #61์ ๋ง๋ค์์ต๋๋ค. ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค.
instascan.min.js๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์๋ ๋ฐ์ฝ๋๋ฅผ ์ค์บํ ์๋ ์์ต๋๊น?
u._decode_qr(this.decodeCallback)
์ u._decode_any(this.decodeCallback)
๋ก ๋ณ๊ฒฝํ๋ ค๊ณ ํ์ต๋๋ค.
QR์ ์ฌ์ ํ โโ์๋ํ์ง๋ง ๋ฐ์ฝ๋๋ ์๋ํ์ง ์์ต๋๋ค.
ZXing._decode_any
๋ก QR ์ฝ๋๋ ์ฌ์ ํ ์๋ํ์ง๋ง ๋ฐ์ฝ๋๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค Runtime.functionPointers[index] is not a function
@eggyyy ์ ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ZXing._decode_any
๋ก QR ์ฝ๋๋ ์ฌ์ ํ ์๋ํ์ง๋ง ๋ฐ์ฝ๋๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋คRuntime.functionPointers[index] is not a function