inspeep

์‚ฌ์ง„ ์˜ฌ๋ฆฌ๊ธฐ ์ „์— ํ™•์ธํ•  EXIF: ์ดฌ์˜ ์ •๋ณด ์ œ๊ฑฐ์™€ ํšŒ์ „ ๋ฌธ์ œ๋ฅผ ํ•จ๊ป˜ ์ ๊ฒ€ํ•˜๊ธฐ

์กฐํšŒ ์ˆ˜ 4
์ถ”์ฒœ ์ˆ˜ 0
๋Œ“๊ธ€ 0

1. ์‚ฌ์ง„์— ๋ณด์ด๋Š” ๋‚ด์šฉ๊ณผ ํŒŒ์ผ ์† ์ •๋ณด๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค

์‚ฌ์ง„ ์† ์–ผ๊ตด๊ณผ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ ธ๋Š”๋ฐ ํŒŒ์ผ ์•ˆ์—๋Š” ์ดฌ์˜ ๊ธฐ๊ธฐ๋‚˜ ์œ„์น˜ ์ •๋ณด๊ฐ€ ๋‚จ์•„ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ํŒŒ์ผ์— ์ดฌ์˜ ์ •๋ณด๊ฐ€ ์—†๋”๋ผ๋„ ๋ฐฐ๊ฒฝ์˜ ๊ฐ„ํŒ๊ณผ ์ฐฝ๋ฌธ์— ๋น„์นœ ๋‚ด์šฉ์ด ์œ„์น˜๋ฅผ ๋“œ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ๊ณต๊ฐœ ์ „์—๋Š” ํ™”๋ฉด ๋‚ด์šฉ๊ณผ ํŒŒ์ผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ๊ฐ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” ์‹ค์ œ ๊ฐœ์ธ ์‚ฌ์ง„ ๋Œ€์‹  ๋‹จ์ƒ‰ ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์ž‘์„ฑ์ž ์ •๋ณด์™€ ๋ฐฉํ–ฅ ํƒœ๊ทธ๋ฅผ ๋„ฃ์–ด ์ œ๊ฑฐ ๊ณผ์ •์„ ์‹œํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์˜ ๊ฒฝํ—˜์ด๋‚˜ ์‹ค์ œ GPS ์œ„์น˜๋ฅผ ๊พธ๋ฉฐ ๋„ฃ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋Š” ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์˜ ํ•œ ๋ถ€๋ถ„์„ ์„ค๋ช…ํ•˜๋ฉฐ ๋ชจ๋“  ๊ฐœ์ธ์ •๋ณด ์ œ๊ฑฐ๋ฅผ ๋ณด์žฅํ•˜๋Š” ์ ˆ์ฐจ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.


2. EXIF ์ œ๊ฑฐ๊ฐ€ ํ•„์š”ํ•œ์ง€ ๋จผ์ € ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

EXIF์—๋Š” ์ดฌ์˜๊ณผ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ํƒœ๊ทธ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒŒ์ผ์— ์œ„์น˜ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ํ˜•์‹๊ณผ ์ƒ์„ฑ ๋„๊ตฌ์— ๋”ฐ๋ผ ์ €์žฅ ๋ฐฉ์‹๋„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํŒŒ์ผ ์†์„ฑ์„ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•˜๋ฉด ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€ ๋„๊ตฌ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด๊ธฐ ๊ธฐ๋Šฅ์œผ๋กœ ์‹ค์ œ ๊ฐ’์„ ํ™•์ธํ•˜์„ธ์š”.

์›๋ณธ์€ ๋”ฐ๋กœ ๋ณด๊ด€ํ•˜๊ณ  ๊ณต๊ฐœํ•  ์‚ฌ๋ณธ์„ ์ƒˆ ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์‚ฌ์ง„์„ ํŽธ์ง‘ํ•˜๊ณ  ์›๋ณธ๊ณผ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์ €์žฅํ•˜๋ฉด ๋น„๊ต์™€ ๋ณต๊ตฌ๊ฐ€ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. ๊ฒŒ์‹œํŒ์— ์ด๋ฏธ ์—…๋กœ๋“œํ–ˆ๋‹ค๋ฉด ๋กœ์ปฌ ํŒŒ์ผ๋งŒ ์ˆ˜์ •ํ•ด๋„ ์„œ๋ฒ„์˜ ๊ธฐ์กด ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ URL๊ณผ ์—…๋กœ๋“œ ๊ฒฐ๊ณผ๋ฅผ ๋ณ„๋„๋กœ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


3. ๋ฐฉํ–ฅ ํƒœ๊ทธ๋ฅผ ์ง€์šฐ๊ธฐ ์ „์— ํšŒ์ „์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค

์ผ๋ถ€ ์‚ฌ์ง„์€ ํ”ฝ์…€ ์ž์ฒด๋ณด๋‹ค EXIF ๋ฐฉํ–ฅ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ํƒœ๊ทธ๋งŒ ์ œ๊ฑฐํ•˜๋ฉด ์‚ฌ์ง„์ด ์˜†์œผ๋กœ ๋ˆ•๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Pillow์˜ exif_transpose๋กœ ๋ฐฉํ–ฅ ์ •๋ณด๋ฅผ ํ”ฝ์…€์— ๋ฐ˜์˜ํ•œ ๋’ค ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์Šต์˜ ์›๋ณธ ํฌ๊ธฐ๋Š” 80ร—40์ด๋ฉฐ ๋ฐฉํ–ฅ ํƒœ๊ทธ๋Š” 6์ž…๋‹ˆ๋‹ค. ๋ณด์ • ํ›„ ์‚ฌ๋ณธ์ด 40ร—80์ด ๋˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ์ง„์—๋Š” ๋‹ค๋ฅธ ๋ฐฉํ–ฅ ๊ฐ’๊ณผ ๋‹ค๋ฅธ ์ƒ‰ ๋ชจ๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋Œ€ํ‘œ ์ƒ˜ํ”Œ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๊ฒ€์‚ฌํ•˜์„ธ์š”. ํ™”๋ฉด์—์„œ ํšŒ์ „์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒ€์‚ฌ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํƒœ๊ทธ ๊ฐœ์ˆ˜ ๊ฒ€์‚ฌ์™€ ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค.


4. ์•„๋ž˜ ์˜ˆ์ œ๋Š” JPEG ์‚ฌ๋ณธ ํ•œ ์žฅ๋งŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค

Pillow๊ฐ€ ์„ค์น˜๋œ Python ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ํ•  ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ python -m pip install Pillow ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. source.jpg๋Š” ์ž์‹ ์˜ ํ…Œ์ŠคํŠธ ์‚ฌ์ง„ ์‚ฌ๋ณธ์œผ๋กœ ์ค€๋น„ํ•˜๊ณ , ๊ณต๊ฐœ ์‚ฌ๋ณธ์€ cleaned.jpg๋ผ๋Š” ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์ถœ๋ ฅ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ์ค‘๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์‹ค์ˆ˜๋กœ ๋ฎ์–ด์“ฐ๋Š” ์ƒํ™ฉ์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ์›๋ณธ ํด๋” ์ „์ฒด๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— ํ•œ ์žฅ์œผ๋กœ ํ™•์ธํ•˜์„ธ์š”.

์ƒˆ RGB ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด ํ”ฝ์…€์„ ๋ณต์‚ฌํ•˜๊ณ  EXIF๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ดฌ์˜ ํƒœ๊ทธ ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ๋‹จ์ˆœ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. JPEG๋กœ ๋‹ค์‹œ ์ €์žฅํ•˜๋ฉด ์••์ถ•์— ์˜ํ•ด ํ”ฝ์…€ ๊ฐ’์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ณ , ์ƒ‰ ๊ด€๋ฆฌ ์ •๋ณด๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒ‰ ํ‘œ์‹œ๋„ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ง„์˜ ์šฉ๋„์™€ ํ’ˆ์งˆ ์š”๊ตฌ๋ฅผ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


5. ์ œ๊ฑฐ ํ›„์—๋„ ํŒŒ์ผ๊ณผ ํ™”๋ฉด์„ ๋‹ค์‹œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

์ €์žฅํ•œ ํŒŒ์ผ์„ ๋‹ค์‹œ ์—ด์–ด EXIF๊ฐ€ ๋‚จ์•„ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด์–ด์„œ ์‹ค์ œ ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋‚ด๋ ค๋ฐ›์•„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ดํŽด๋ณด๋ฉด ๊ฒŒ์‹œ ์‹œ์Šคํ…œ์ด ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋„ฃ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋„ค์ผ๊ณผ ์›๋ณธ์ด ๋ณ„๋„ URL์ด๋ผ๋ฉด ๋‘˜์„ ๊ฐ๊ฐ ์ ๊ฒ€ํ•˜์„ธ์š”.

ํƒœ๊ทธ๊ฐ€ 0๊ฐœ๋ผ๋Š” ๊ฒฐ๊ณผ๋ฅผ โ€œ์•„๋ฌด ์ •๋ณด๋„ ์—†๋‹คโ€๋กœ ํ™•๋Œ€ํ•ด ๋งํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ํ˜•์‹์˜ ๋‹ค๋ฅธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ํŒŒ์ผ ์ด๋ฆ„, ์—…๋กœ๋“œ ๊ธฐ๋ก, ํ”ฝ์…€ ๋‚ด์šฉ์€ ๋ณ„๋„ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์‚ฌ๋ณธ์˜ ํ™”๋ฉด์„ ์ง์ ‘ ๋ณด๊ณ  ์–ผ๊ตด, ๋ฌธ์„œ, ํ™”๋ฉด ์•Œ๋ฆผ, ์œ„์น˜ ๋‹จ์„œ๊ฐ€ ๋‚จ์•„ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์ƒ๋žตํ•˜์ง€ ๋งˆ์„ธ์š”.


6. ์—ฌ๋Ÿฌ ์‚ฌ์ง„์„ ์ฒ˜๋ฆฌํ•  ๋•Œ์˜ ๊ธฐ์ค€

๋ฐฐ์น˜ ์ž‘์—…์„ ๋งŒ๋“ค๋ฉด ์ž…๋ ฅ ํ™•์žฅ์ž, ์‹คํŒจํ•œ ํŒŒ์ผ, ์ถœ๋ ฅ ํด๋”์™€ ๊ฒฐ๊ณผ ๊ฐœ์ˆ˜๋ฅผ ๋กœ๊ทธ๋กœ ๋‚จ๊น๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์ฝ์ง€ ๋ชปํ–ˆ๋Š”๋ฐ ์„ฑ๊ณต์œผ๋กœ ๊ธฐ๋กํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐœ์ธ์ •๋ณด ๊ฒ€ํ† ์— ๋ถ€์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ์— ๋ฎ์–ด์“ฐ์ง€ ์•Š๊ณ  ์‹คํŒจํ•œ ํŒŒ์ผ์„ ํ™•์ธ ๋Œ€์ƒ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์„ธ์š”. ์ต๋ช…ํ™”๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ์ง„์€ ๋‹จ์ˆœ EXIF ์ œ๊ฑฐ ์™ธ์˜ ํŽธ์ง‘๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์• ๋‹ˆ๋ฉ”์ด์…˜, ํˆฌ๋ช… ๋ฐฐ๊ฒฝ, HEIC ๋“ฑ์€ ์ด JPEG ์˜ˆ์ œ๋กœ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™•์žฅ์ž๋งŒ JPEG๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ๋„ ๋ณ€ํ™˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ํŒŒ์ผ ์ข…๋ฅ˜๋งˆ๋‹ค ์ง€์›๋˜๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•๊ณผ ํ’ˆ์งˆ ๋ณ€ํ™”๊ฐ€ ๋‹ค๋ฅด๋ฏ€๋กœ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๊ณ  ๊ฒ€์ฆํ•˜์„ธ์š”. ์ž‘์—…๋Ÿ‰์ด ๋งŽ๋”๋ผ๋„ ์ฒ˜์Œ์—๋Š” ๋Œ€ํ‘œ ์ƒ˜ํ”Œ์„ ์—ด์–ด ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•œ ๋’ค ํ™•๋Œ€ํ•˜๋Š” ํŽธ์ด ์ข‹์Šต๋‹ˆ๋‹ค.


7. ์—…๋กœ๋“œ ์ „ํ›„์˜ ์‚ฌ๋ณธ์„ ๋น„๊ตํ•˜๋Š” ์ ˆ์ฐจ

์ƒˆ ์‚ฌ๋ณธ์„ ์ €์žฅํ–ˆ๋‹ค๋ฉด ์›๋ณธ ์˜†์—์„œ ์—ด์–ด ๋ฐฉํ–ฅ๊ณผ ์ƒ‰, ์ค‘์š”ํ•œ ๊ธ€์ž๊ฐ€ ์œ ์ง€๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ƒ‰ ์‹ค์Šต์€ ์ •๋ณด ์ œ๊ฑฐ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ ์‹ค์ œ ๋ฌธ์„œ ์‚ฌ์ง„์˜ ๊ฐ€๋…์„ฑ๊นŒ์ง€ ๋ณด์—ฌ ์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘์€ ๊ธ€์ž, ์–ด๋‘์šด ์‚ฌ์ง„๊ณผ ๋†’์€ ๋Œ€๋น„์˜ ๋Œ€ํ‘œ ์ƒ˜ํ”Œ์„ ๋”ฐ๋กœ ์ ๊ฒ€ํ•˜๋ฉด ์žฌ์••์ถ•์— ์˜ํ•œ ํ’ˆ์งˆ ๋ฌธ์ œ๋ฅผ ์ฐพ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์—…๋กœ๋“œํ•œ ๋’ค์—๋Š” ํ™”๋ฉด์— ํ‘œ์‹œ๋œ ์ด๋ฏธ์ง€๋งŒ ๋ณด์ง€ ๋ง๊ณ  ๊ณต๊ฐœ๋˜๋Š” ์›๋ณธ ํŒŒ์ผ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ธ๋„ค์ผ์€ ์•ˆ์ „ํ•œ ์‚ฌ๋ณธ์ธ๋ฐ ๋‹ค์šด๋กœ๋“œ ๋งํฌ๊ฐ€ ์›๋ณธ์„ ๊ฐ€๋ฆฌํ‚ค๋ฉด ๊ณต๊ฐœ ๋ฒ”์œ„๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œํŒ ํ”„๋กœ๊ทธ๋žจ์ด ์—…๋กœ๋“œ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ํฌ๊ธฐ๋กœ ์ €์žฅํ•œ๋‹ค๋ฉด ์–ด๋А ํŒŒ์ผ์ด ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ์ง€ ๋ชฉ๋ก์„ ํ™•์ธํ•˜์„ธ์š”. ํŒŒ์ผ ์ด๋ฆ„์— ๊ฐœ์ธ ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ๋Š”์ง€๋„ ํ•จ๊ป˜ ๋ด…๋‹ˆ๋‹ค.

์ด๋ฏธ ์˜ฌ๋ฆฐ ์‚ฌ์ง„์„ ๊ต์ฒดํ•  ๋•Œ๋Š” ์„œ๋ฒ„ ์ €์žฅ๋ณธ๊ณผ ์บ์‹œ์˜ ๊ด€๊ณ„๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ํŒŒ์ผ์„ ์ƒˆ๋กœ ์ €์žฅํ•œ ๊ฒƒ๋งŒ์œผ๋กœ ๊ธฐ์กด URL ๋‚ด์šฉ์ด ๋ฐ”๋€Œ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ URL์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋‚˜ CDN์— ์ด์ „ ํŒŒ์ผ์ด ๋‚จ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ์ด๋ฆ„๊ณผ ์ƒˆ URL๋กœ ๊ต์ฒดํ•˜๋Š” ์„ค๊ณ„๊ฐ€ ์žˆ๋‹ค๋ฉด ์‹ค์ œ ๊ฒŒ์‹œ๊ธ€ ๋งํฌ๊นŒ์ง€ ๊ฐฑ์‹ ๋๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋Š” ์„ฑ๊ณต ์ˆ˜๋ฟ ์•„๋‹ˆ๋ผ ์‹คํŒจ์™€ ์ œ์™ธ ์ˆ˜๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•Œ ์ˆ˜ ์—†๋Š” ํ˜•์‹์„ ์กฐ์šฉํžˆ ๊ฑด๋„ˆ๋›ฐ๋ฉด ๊ณต๊ฐœ ๋Œ€์ƒ์ด ์›๋ณธ์œผ๋กœ ๋‚จ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ์›๋ณธ ๋ชฉ๋ก๊ณผ ์‚ฌ๋ณธ ๋ชฉ๋ก์„ ๋Œ€์กฐํ•˜๊ณ  ์˜ˆ์™ธ๋ฅผ ๋ณ„๋„ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. ์‚ญ์ œ๋ฅผ ์ž๋™ํ™”ํ•˜๊ธฐ ์ „์— ์ถœ๋ ฅ ํŒŒ์ผ์ด ์‹ค์ œ๋กœ ์ฝํžˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ์ •๋ณด๋ฅผ ๊ฐ€๋ฆฌ๋Š” ์ž‘์—…์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์‚ญ์ œ์™€ ํ”ฝ์…€ ํŽธ์ง‘์„ ํ•จ๊ป˜ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. ์–ผ๊ตด, ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ, ์ฃผ์†Œ ๋ฌธ์„œ์™€ ํ™”๋ฉด ์•Œ๋ฆผ์€ ํŒŒ์ผ ํƒœ๊ทธ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ณ„๋„์ž…๋‹ˆ๋‹ค. ์‚ฌ์ง„์„ ๊ณต์œ ํ•ด ๊ฒ€ํ† ๋ฐ›์„ ๋•Œ๋„ ์›๋ณธ ์ „์ฒด๋ฅผ ๊ณต๊ฐœํ•˜๊ธฐ๋ณด๋‹ค ํ•„์š”ํ•œ ๋ถ€๋ถ„์˜ ๊ฐ€์ƒ ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ๊ธ€์˜ ๋ฐฉ๋ฒ•์€ EXIF์™€ ๋ฐฉํ–ฅ ์ฒ˜๋ฆฌ์˜ ํ•™์Šต ์‚ฌ๋ก€์ด๋ฉฐ ์™„์ „ํ•œ ์ต๋ช…ํ™” ๋„๊ตฌ๋ผ๊ณ  ์†Œ๊ฐœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


8. ๋”ฐ๋ผ ํ•˜๋Š” ์˜ˆ์ œ

๋ช…๋ น๊ณผ ์ฝ”๋“œ๋Š” ํ•™์Šต์šฉ์ž…๋‹ˆ๋‹ค. ์„ค๋ช…์— ํ‘œ์‹œ๋œ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๊ตฌ๋ถ„ํ•˜๊ณ  ์ƒˆ ์‹œํ—˜ ํด๋” ๋˜๋Š” ๋ชจ์˜ ์ž…๋ ฅ์œผ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”.

์˜ˆ์ œ ์ฝ”๋“œ

from pathlib import Path
from PIL import Image, ImageOps
src_path = Path('source.jpg')
out_path = Path('cleaned.jpg')
if out_path.exists():
    raise SystemExit('์ถœ๋ ฅ ํŒŒ์ผ์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค.')
with Image.open(src_path) as src:
    print('์›๋ณธ EXIF ํƒœ๊ทธ:', len(src.getexif()))
    upright = ImageOps.exif_transpose(src).convert('RGB')
    clean = Image.new('RGB', upright.size)
    clean.paste(upright)
    clean.save(out_path, quality=90)
with Image.open(out_path) as result:
    print('์‚ฌ๋ณธ ํฌ๊ธฐ:', result.size)
    print('์‚ฌ๋ณธ EXIF ํƒœ๊ทธ:', len(result.getexif()))


9. ๊ฒ€์ฆ ๊ฒฐ๊ณผ์™€ ํ•ด์„

ํ™•์ธ ํ•ญ๋ชฉ๊ฒฐ๊ณผ ๋˜๋Š” ๊ฒ€์ฆ ๋ฒ”์œ„
๊ฒ€์ฆ์šฉ ์›๋ณธ80ร—40 ยท Orientation=6 ยท Artist=Demo Author
์ฒ˜๋ฆฌ ์ „ EXIF2๊ฐœ ํƒœ๊ทธ
์ฒ˜๋ฆฌ ํ›„ EXIF0๊ฐœ ํƒœ๊ทธ
์ฒ˜๋ฆฌ ํ›„ ํฌ๊ธฐ40ร—80

์ง์ ‘ ์ƒ์„ฑํ•œ JPEG์˜ OrientationยทArtist ํƒœ๊ทธ ์ œ๊ฑฐ์™€ ํฌ๊ธฐ ๋ณ€ํ™”๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ GPS ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ์‚ฌ์ง„์ด๋‚˜ ๋ชจ๋“  ํŒŒ์ผ ํ˜•์‹์˜ ์ •๋ณด ์ œ๊ฑฐ๋ฅผ ๊ฒ€์ฆํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.


10. ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

EXIF๋ฅผ ์ง€์šฐ๋ฉด ์œ„์น˜๋ฅผ ์ ˆ๋Œ€ ์•Œ ์ˆ˜ ์—†๋‚˜์š”?

์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ์ง„ ๋ฐฐ๊ฒฝ, ํŒŒ์ผ ์ด๋ฆ„, ๋‹ค๋ฅธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ์„œ๋น„์Šค ๊ธฐ๋ก์—์„œ๋„ ๋‹จ์„œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ง„์ด ๋Œ์•„๊ฐ€๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

๋ฐฉํ–ฅ ํƒœ๊ทธ๋ฅผ ์ง€์šฐ๊ธฐ ์ „์— ํ”ฝ์…€ ๋ฐฉํ–ฅ ๋ณด์ •์„ ์ ์šฉํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ๊ณผ ์‚ฌ๋ณธ์„ ๋‚˜๋ž€ํžˆ ์—ด์–ด ๋ณด์„ธ์š”.

์›๋ณธ ์‚ฌ์ง„๋„ ์‚ญ์ œํ•ด์•ผ ํ•˜๋‚˜์š”?

์ด ์‹ค์Šต์€ ์›๋ณธ ๋ณด์กด๊ณผ ๊ณต๊ฐœ ์‚ฌ๋ณธ ์ƒ์„ฑ์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ์˜ ๋ณด๊ด€ ์œ„์น˜์™€ ๊ณต๊ฐœ ์ ‘๊ทผ ์—ฌ๋ถ€๋Š” ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜์„ธ์š”.


11. ๊ณต์‹ ์ฐธ๊ณ  ์ž๋ฃŒ

๋™์ž‘ ์ •์˜์™€ ์˜ต์…˜์€ ์•„๋ž˜ ์ œ์ž‘์ž ๋ฌธ์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์˜ ์‚ฌ๋ก€์™€ ์˜ˆ์ œ๋Š” ํ•™์Šต์„ ์œ„ํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ์€ ํ•™์Šต์šฉ ๋ชจ์˜ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ํ™˜๊ฒฝ์— ์ ์šฉํ•  ๋•Œ๋Š” ๋ณธ๋ฌธ์— ์•ˆ๋‚ดํ•œ ๊ฒ€์ฆ ๋ฒ”์œ„์™€ ์กฐ๊ฑด์„ ํ™•์ธํ•˜์„ธ์š”.

๐Ÿ’ฌ ๋Œ“๊ธ€ 0๊ฐœ

IT ๊ฒŒ์‹œํŒ

๊ณต์ง€
Notice
๊ณต์ง€ inspeep ์ปค๋ฎค๋‹ˆํ‹ฐ ์ด์šฉ ๋ฐ ๊ฒŒ์‹œ๋ฌผ ๊ด€๋ฆฌ ๊ทœ์ • ์•ˆ๋‚ด
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.04.15 ๐Ÿ‘€ ์กฐํšŒ 57 ๐Ÿ‘ ์ถ”์ฒœ 0
BEST
์ธ๋„ค์ผ
BEST 2. ์ฝ”๋”ฉ ๋ฌธ์™ธํ•œ์˜ ์›Œ๋“œํ”„๋ ˆ์Šค ์ •๋ณต๊ธฐ: VS Code์™€ FTP์˜ ์Šต๊ฒฉ
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.03.05 ๐Ÿ‘€ ์กฐํšŒ 135 ๐Ÿ‘ ์ถ”์ฒœ 0
Random Pick
์ธ๋„ค์ผ
Random Pick XenoFeels ๊ฐœ๋ฐœ์ž์— ๋Œ€ํ•œ ์ถฉ๊ฒฉ์‚ฌ์‹ค
๐Ÿ‘ค ๋””๋ก ๐Ÿ“… 2026.07.15 ๐Ÿ‘€ ์กฐํšŒ 25 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
๋ฏธ์Šคํ„ฐ๋ฆฌํ•œ (์›€์งค ๋‹ค์ˆ˜) 1๋‹ฌ๊ฐ„์˜ ๊ฐœ๋ฐœ ์ผ์ง€
๐Ÿ‘ค Cyan ๐Ÿ“… 2026.06.27 ๐Ÿ‘€ ์กฐํšŒ 17 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
์‚ฌ์ด๋‹ค ๊ฐ™์€ ๋ž˜ํ† ํ”ผ์•„ ๊ฐœ๋ฐœ์ผ์ง€ #38 - ๊ด€๊ด‘ ์‹œ์Šคํ…œ
๐Ÿ‘ค ๋””๋ก ๐Ÿ“… 2026.06.27 ๐Ÿ‘€ ์กฐํšŒ 20 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
์ž์œ 
No Image
FastAPI์™€ Redis๋ฅผ ํ™œ์šฉํ•œ 1์ธ ๊ฐœ๋ฐœ์ž์˜ ๋ฐฑ์—”๋“œ ์ตœ์ ํ™” ์—ฌ์ •
๐Ÿ‘ค ์ธ์Šคํ”ผ ๐Ÿ“… 2026.06.17 ๐Ÿ‘€ ์กฐํšŒ 12 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
๊ทน๊ฐ•์˜ ์‹ฑ๊ธ€๋ฒ™๊ธ€ ๊ตญ๋‚ด ๊ฒŒ์ž„๊ฐœ๋ฐœ์ž์˜ ๋ฏธ๋ž˜ ์˜ˆ์–ธ๊ธ€
๐Ÿ‘ค ์•ผ๋ฆฌํƒ€ ๐Ÿ“… 2026.06.15 ๐Ÿ‘€ ์กฐํšŒ 10 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
์œ ๋ถ€๋‚จ ์ปดํ“จํ„ฐ ๋งŒ๋“ค๊ธฐ (์Šค์••)
๐Ÿ‘ค ๋ฆฌํ† ํƒ€ ๐Ÿ“… 2026.06.13 ๐Ÿ‘€ ์กฐํšŒ 13 ๐Ÿ‘ ์ถ”์ฒœ 0
๋‰ด์Šค
์ธ๋„ค์ผ
ํŒ์ฝ˜๊ฐ ์ปดํ“จํ„ฐ ์ผ€์ด์Šค ๋ชจ๋”ฉ ๋Œ€ํšŒ ์ถœํ’ˆ์ž‘
๐Ÿ‘ค Cyan ๐Ÿ“… 2026.06.10 ๐Ÿ‘€ ์กฐํšŒ 11 ๐Ÿ‘ ์ถ”์ฒœ 0
์ผ๋ฐ˜
์ธ๋„ค์ผ
์šด ์ข‹๊ฒŒ๋„ ์ƒ์ƒ์ดˆ์›” ์• ํ”Œ WWDC26 ์š”์•ฝ (1)~(4) - Platform Improvments
๐Ÿ‘ค Cyan ๐Ÿ“… 2026.06.09 ๐Ÿ‘€ ์กฐํšŒ 20 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
๋ˆˆ๋ถ€์‹  ๋ž˜ํ† ์นผ๋ฆฝ์Šค ๊ฐœ๋ฐœ์ผ์ง€ #9 - PlayX4 ์ „์‹œํ›„๊ธฐ
๐Ÿ‘ค ์•ผ๋ฆฌํƒ€ ๐Ÿ“… 2026.06.05 ๐Ÿ‘€ ์กฐํšŒ 11 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
๊ณ ๊ตฌ๋งˆ ๋จน์€ ๋””์ง€ํƒญ ์–ธ์˜คํ”„ ๊ทธ ๊ฐœ๋ฐœ ๋น„ํ™” *์Šค์••์ฃผ์˜
๐Ÿ‘ค ๋ฆฌํ† ํƒ€ ๐Ÿ“… 2026.05.31 ๐Ÿ‘€ ์กฐํšŒ 8 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ
์ธ๋„ค์ผ
๋‡Œ๋นผ๊ณ  ์—ญ๋Œ€๊ธ‰ 5์›” ๊ฐœ๋ฐœ ์ผ์ง€ ๋ฐ ํ–ฅํ›„ ์ฝ˜ํ…์ธ  ์†Œ๊ฐœ
๐Ÿ‘ค ํ“จ๋ฉ”์ด์ฃ ์ด ๐Ÿ“… 2026.05.30 ๐Ÿ‘€ ์กฐํšŒ 13 ๐Ÿ‘ ์ถ”์ฒœ 0
« ์ฒ˜์Œ ‹ ์ด์ „ 1 2 3 4 5 6 7 ๋‹ค์Œ › ๋ »
โœ๏ธ ๊ธ€์“ฐ๊ธฐ