Instascan: ์ „๋ฉด/ํ›„๋ฉด ์นด๋ฉ”๋ผ ์ง€์›

์— ๋งŒ๋“  2016๋…„ 07์›” 19์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: schmich/instascan

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์‚ฌ์šฉ์ž ์ •์˜ ์นด๋ฉ”๋ผ ์„ค์ •์˜ ์ผ๋ถ€๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ name ๊ฐ’ ์•ˆ์— "๋’ค๋กœ"๊ฐ€ ํฌํ•จ๋œ ์ฒซ ๋ฒˆ์งธ ์นด๋ฉ”๋ผ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

if (cameras.length > 0) {
    var selectedCam = cameras[0];
    $.each(cameras, (i, c) => {
        if (c.name.indexOf('back') != -1) {
            selectedCam = c;
            return false;
        }
    });

    scanner.start(selectedCam);
} else {
    console.error('No cameras found.');
}

ํ•ญ์ƒ ํ›„๋ฐฉ ์นด๋ฉ”๋ผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  11 ๋Œ“๊ธ€

์ด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
PR์ด ํ•„์š”ํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์‹œ์ž‘ ์œ„์น˜ ๋ฐ/๋˜๋Š” instascan ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ํžŒํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

Camera.getCameras() ์— ์ œ์•ฝ ์กฐ๊ฑด์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

getCameras ๊ตฌํ˜„์€ ์ œ๊ณต๋œ ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ getUserMedia ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ์นด๋ฉ”๋ผ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
camera.js#L53 ์ฐธ์กฐ

์ด๊ฒƒ์€ #22๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ start ๋ฉ”์„œ๋“œ์—์„œ ์ œ๊ณต๋œ ๊ธฐ๋ณธ๊ฐ’๊ณผ ํ•ด์ƒ๋„ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋ณ‘ํ•ฉํ•˜๋ ค๋ฉด Camera ์ƒ์„ฑ์ž์— ํ•ด์ƒ๋„ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
camera.js#L20 ์ฐธ์กฐ

๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๊ธฐ๊บผ์ด PR์„ ์ œ์ถœํ•  ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ;)

์‚ฌ์šฉ์ž ์ •์˜ ์นด๋ฉ”๋ผ ์„ค์ •์˜ ์ผ๋ถ€๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ name ๊ฐ’ ์•ˆ์— "๋’ค๋กœ"๊ฐ€ ํฌํ•จ๋œ ์ฒซ ๋ฒˆ์งธ ์นด๋ฉ”๋ผ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

if (cameras.length > 0) {
    var selectedCam = cameras[0];
    $.each(cameras, (i, c) => {
        if (c.name.indexOf('back') != -1) {
            selectedCam = c;
            return false;
        }
    });

    scanner.start(selectedCam);
} else {
    console.error('No cameras found.');
}

ํ•ญ์ƒ ํ›„๋ฐฉ ์นด๋ฉ”๋ผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๋์€ ์ž‘๋™ํ•˜์ง€๋งŒ ํ›„๋ฉด ์นด๋ฉ”๋ผ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ•˜๋ฉด ์ˆ˜ํ‰์œผ๋กœ ๋’ค์ง‘ํž™๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์›๋ž˜ ์œ„์น˜๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”

๋น„์ •์ƒ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์นด๋ฉ”๋ผ๋ฅผ ์‹œ์ž‘ํ•˜๋“  ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์ „๋ฉด ์นด๋ฉ”๋ผ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์–ด๋ ˆ์ด์—์„œ ๋‘ ์นด๋ฉ”๋ผ๋ฅผ ๋ชจ๋‘ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ›„๋ฉด ์นด๋ฉ”๋ผ๋ฅผ ๊ฐ•์ œ๋กœ ์‹œ์ž‘ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์Šคํฌ๋ฆฝํŠธ๋Š” ํ•ญ์ƒ ์ „๋ฉด ์นด๋ฉ”๋ผ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ตœ์‹  ๋ฒ„์ „์˜ iOS๋ฅผ ๋‹ค์šด๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.
์„ค์ •:
์•„์ดํฐ 6s
iOS 11
์›์ • ์—ฌํ–‰.

๋˜ํ•œ ๋™์ผํ•œ ์žฅ์น˜/OS์˜ Chrome ๋ฐ Firefox์—์„œ ์นด๋ฉ”๋ผ๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์•„์ด๋””์–ด?

๊ฐ์‚ฌ ํ•ด์š”

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. IOS์—์„œ ํ›„๋ฉด ์นด๋ฉ”๋ผ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”
ํ—ฌ๋ Œ

@cbnt
@HelenH
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์…จ์Šต๋‹ˆ๊นŒ? ๋‚˜๋ฅผ ์œ„ํ•ด ๋‘ ์นด๋ฉ”๋ผ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ›„๋ฉด ์นด๋ฉ”๋ผ๋กœ ์ „ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋ฏธ๋ฆฌ ์„ ํƒํ•˜๋ฉด ํ•ญ์ƒ ์ „๋ฉด ์นด๋ฉ”๋ผ๋กœ ๋‹ค์‹œ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

@schmich ์šฐ์„  ์ด ๋ฉ‹์ง„ ํ”„๋กœ์ ํŠธ์— ์ •๋ง ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! :) ๋‘˜์งธ, ์ด๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ Iphone ๋ฌธ์ œ์ธ์ง€ ๋˜๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ฐธ๊ณ : iOS 11์—์„œ iPhone 7 ์‚ฌ์šฉ

์•ˆ๋…•ํ•˜์„ธ์š” @Smux ๋‹˜

์˜ˆ, ๋ฌธ์ œ #54์˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค.

์ž์‹ ํด๋ก  [email protected] :schmich/instascan.git
CD ์ธ์Šคํƒ€์Šค์บ”/
npm ์„ค์น˜ gulp-cli -g
npm ์„ค์น˜
๊ฟ€๊บฝ๊ฟ€๊บฝ
cp dist/instascan.min.js /path/to/our/libraries/include/dir

์ด ๋ฉ‹์ง„ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด @schmich์—๊ฒŒ๋„ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@HelenH
@Smux

์ด ํฌํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค: https://github.com/PallasKatze/instascan
๊ทธ๋ž˜๋„ ๋ฌธ์ œ #54์˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
Android์— ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ํ•˜๋‚˜์˜ ํŠน์ • ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @cbnt์ž…๋‹ˆ๋‹ค .
๋‚˜๋„ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ถ•์†Œ๋œ js๋Š” ์›๋ž˜ ๋ถ„๊ธฐ์™€ ๋™์ผํ•œ js์— ๋Œ€ํ•œ ๋งํฌ ๋งํฌ์ž…๋‹ˆ๋‹ค.
ํŒจํ‚ค์ง€์—์„œ ์ถ•์†Œ๋œ js๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋ ๊นŒ์š”? ํ•˜๋‚˜์˜ ์ž‘๋™ํ•˜๋Š” js ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ธฐ๋ณธ์ ์ธ ์งˆ๋ฌธ์ด๊ณ  ์ฃผ์ œ์—์„œ ์กฐ๊ธˆ ๋ฒ—์–ด๋‚œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋ฆด๋ฆฌ์Šค js๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์— npm์„ ์„ค์น˜ํ–ˆ์ง€๋งŒ ๊ฒŒ์‹œํ•˜๋ ค๊ณ  ํ•  ๋•Œ npm์—์„œ ๊ณ„์† ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ์นด๋ฉ”๋ผ ์„ค์ •์˜ ์ผ๋ถ€๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ name ๊ฐ’ ์•ˆ์— "๋’ค๋กœ"๊ฐ€ ํฌํ•จ๋œ ์ฒซ ๋ฒˆ์งธ ์นด๋ฉ”๋ผ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

if (cameras.length > 0) {
    var selectedCam = cameras[0];
    $.each(cameras, (i, c) => {
        if (c.name.indexOf('back') != -1) {
            selectedCam = c;
            return false;
        }
    });

    scanner.start(selectedCam);
} else {
    console.error('No cameras found.');
}

ํ•ญ์ƒ ํ›„๋ฐฉ ์นด๋ฉ”๋ผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉ์ž ์ง€์ • ์นด๋ฉ”๋ผ ์„ค์ •์˜ ์ผ๋ถ€๋ฅผ ํ—ˆ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ name ๊ฐ’ ์•ˆ์— "๋’ค๋กœ"๊ฐ€ ํฌํ•จ๋œ ์ฒซ ๋ฒˆ์งธ ์นด๋ฉ”๋ผ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

if (cameras.length > 0) {
    var selectedCam = cameras[0];
    $.each(cameras, (i, c) => {
        if (c.name.indexOf('back') != -1) {
            selectedCam = c;
            return false;
        }
    });

    scanner.start(selectedCam);
} else {
    console.error('No cameras found.');
}

ํ•ญ์ƒ ํ›„๋ฐฉ ์นด๋ฉ”๋ผ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

@clytras ์ข‹์€ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ํœด๋Œ€ ์ „ํ™”์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ›„๋ฉด ์นด๋ฉ”๋ผ๊ฐ€ ์žˆ์œผ๋ฉด ์–ด๋–ป๊ฒŒ๋ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ–ˆ๊ณ  ์–ด๋ ˆ์ด์˜ ์ฒซ ๋ฒˆ์งธ ํ›„๋ฉด ์นด๋ฉ”๋ผ๋กœ ๋งŽ์€ ์คŒ์œผ๋กœ ์‹œ์•ผ๊ฐ€ ๋”์ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์Šค์บ”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‘ ๋ฒˆ์งธ ํ›„๋ฉด ์นด๋ฉ”๋ผ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์Šค์บ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ ์งˆ๋ฌธ์€ ๋ฉ”์ธ ํ›„๋ฉด ์นด๋ฉ”๋ผ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ์›น์‚ฌ์ดํŠธ๋ฅผ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ›„๋ฉด ์นด๋ฉ”๋ผ์˜ ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๊ณ  ์ฃผ๋ฌธ์ด ๋ฐ˜ํ™˜๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰