์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ์‚ฌ๋žŒ๋“ค์€ ํ…Œ๋Ÿฌ๋ฆฌ์ŠคํŠธ, ์†Œ์•„์„ฑ์• ์ž, ์ŠคํŒŒ์ด, ๊ธฐ๊ปํ•ด์•ผ ์•”ํ˜ธ ๋ฌด์ •๋ถ€์ฃผ์˜์ž ๋ฐ ๊ธฐํƒ€ ๊ณผํ•™์ž๋ฅผ ๋– ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ๋ˆ„๊ฐ€ ํ•„์š”ํ• ๊นŒ์š”? ์ˆจ๋‹ค ์™ธ๋ถ€ ๋ˆˆ์—์„œ ๋ญ”๊ฐ€? ์ด๊ฒƒ์ด ๋ณดํ†ต ์‚ฌ๋žŒ์—๊ฒŒ ๋ฌด์Šจ ์œ ์ต์ด ์žˆ๊ฒ ์Šต๋‹ˆ๊นŒ?

ํ•˜๋‚˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜ค๋Š˜ ์šฐ๋ฆฌ๊ฐ€ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ•ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ ๋…์ž๋Š” JPEG ํ˜•์‹์˜ ์†Œ์ค‘ํ•œ ์‚ฌ์ง„ ์•„์นด์ด๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋ฌด๋ฃŒ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋Š˜๋ฆด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

๋ญ๋ผ๊ตฌ?

๋…์ž๊ฐ€ ๊ธฐ์–ตํ•œ๋‹ค๋ฉด, ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋Š” ํ•œ ์ •๋ณด์˜ ์กด์žฌ๋ฅผ ๋‹ค๋ฅธ ์ •๋ณด ์•ˆ์— ์ˆจ๊ธธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ด์ƒํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋” ๊ฐ„๋‹จํ•œ ์–ธ์–ด๋กœ: ๊ทธ๋ฆผ + ํŒŒ์ผ == ๊ฑฐ์˜ ๋™์ผํ•œ ๊ทธ๋ฆผ์ด์ง€๋งŒ ์™„์ „ํžˆ ๊ฐ™์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆผ ๋Œ€์‹ ์— ๋ฌด์—‡์ด๋“  ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๋” ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค). ์•ˆ์— ๋ญ”๊ฐ€๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์‰ฝ๊ฒŒ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•˜๋‚˜๋ฅผ ๋‹ค๋ฅธ ํ•˜๋‚˜์™€ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ „ํ˜€ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์†Œ๋น„์ž์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ, ์‚ฌ์šฉ์ž๋Š” ์ˆ˜ํ•™์  ์ •๋ฐ€๋„(ํŠน์ • ๋น„ํŠธ ์„ธํŠธ์— ์˜ํ•ด ๋ฐ˜์˜๋จ)์—๋Š” ๊ด€์‹ฌ์ด ์—†๊ณ  ๋‹จ์ง€ ์ž์‹ ์ด ์ธ์‹ํ•˜๋Š” ๊ฒƒ์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ท€์—ฌ์šด ๊ฐ•์•„์ง€์˜ ์„ธ ๊ฐ€์ง€ ์ด๋ฏธ์ง€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์กฐ์‹ฌํ•˜์„ธ์š”, JPEG!

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

ํฌ๊ธฐ์˜ ํฐ ์ฐจ์ด์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์„ธ ๋ฒˆ์งธ ๋ฒ„์ „์„ ์„ ํƒํ•˜๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ฒ˜์Œ ๋‘ ์‚ฌ์ง„์˜ ์ฐจ์ด๋Š” ๊ทธ๋‹ค์ง€ ๋ˆˆ์— ๋„์ง€ ์•Š์œผ๋ฉฐ (๋‚ด ๊ด€์ ์—์„œ ๋ณผ ๋•Œ) ๊ทธ ์•ˆ์— ๋‹ด๊ธด ์ •๋ณด์˜ ์–‘์€ ๋™์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์›๋ฆฌ ์ž์ฒด๋Š” ์ด๋ฏธ ์˜ค๋ž˜๋˜์—ˆ์œผ๋ฉฐ ์ˆ˜๋…„ ๋™์•ˆ ์†์‹ค ์ •๋ณด ์••์ถ• ๋ฐฉ๋ฒ•์— ์˜ํ•ด ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒŒ๊ดด๋Š” ๊ตฌ์ถ•์ด ์•„๋‹ˆ๋ฉฐ, ์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ์˜ ๋ณด๋‹ค ์ง„๋ณด๋œ ์ธก๋ฉด์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์‚ฌ์ด์ฆˆ ์ •๋ณด๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? N ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋„๋ก ํŒŒ์ผ์— ์ถ”๊ฐ€ M < N, ๊ทธ๋Ÿฌ๋‚˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ˆˆ์— ๋„์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?

๋ฌผ๋ก  ๋‹น์‹ ์€ ํ•  ์ˆ˜. ํ•˜์ง€๋งŒ ์ฆ‰์‹œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์•ฝ์„ ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฒซ์งธ, ๋ฐฉ๋ฒ•์€ ๋ณดํŽธ์ ์ด์–ด์•ผ ํ•˜๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ธ์ •์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ‰๊ท ์ ์œผ๋กœ ๋ฌด์ž‘์œ„ ์ž…๋ ฅ์˜ ๊ฒฝ์šฐ ์ €์žฅ๋œ ์ •๋ณด์˜ ์–‘์ด ์‹ค์ œ๋กœ ๊ฐ์†Œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "ํ‰๊ท ์ ์œผ๋กœ"๋Š” ๋ฐ˜๋Œ€๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์šฐ์„ธํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
  • ๋‘˜์งธ, ์ •๋ณด๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์ „ ์••์ถ•๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ๋Š” ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์••์ถ•๋œ ์ˆ˜์ •๋ณธ๋ณด๋‹ค ์ปค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ LSB ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ BMP ์ด๋ฏธ์ง€์— ์—ฌ๋Ÿฌ ๋น„ํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์€ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ฝ ์••์ถ•์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ผ์ข…์˜ DEFLATE๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์›๋ณธ ์ด๋ฏธ์ง€๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ์ž‘์•„์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ์…‹์งธ, ๊ธฐ์กด ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋ฏธ ์••์ถ•๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋น„๊ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ค‘๋ณต์„ฑ ์ฐจ์ด๋กœ ์ธํ•œ ํ™•๋ฅ ์  ํšจ๊ณผ๊ฐ€ ์ œ๊ฑฐ๋˜๊ณ  ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์— ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์••์ถ•์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์–ด๋””์„œ?

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

์ด๋Ÿฌํ•œ ๋งฅ๋ฝ์—์„œ ๊ทธ๋ž˜ํ”ฝ, ์˜ค๋””์˜ค ๋ฐ ๋น„๋””์˜ค ํŒŒ์ผ์ด ์ข‹์€ ํ›„๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์–‘ํ•œ ํ˜•์‹, ์ฝ”๋ฑ ๋“ฑ์œผ๋กœ ์ธํ•ด ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ง€ ์•Š์€ ์˜ต์…˜ ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ณ ๋ คํ•˜์—ฌ ์ œ๊ฐ€ ์„ ํƒํ•œ JPEG๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐœ์ธ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉ์ ์œผ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์‚ฌ์‹ค์ƒ์˜ ํ˜•์‹์ž…๋‹ˆ๋‹ค.

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

๋•Œ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€?

๊ทธ ๋‹ค์Œ์—๋Š” ๋ณ„๋‹ค๋ฅธ ์„ค๋ช… ์—†์ด ๋Œ€๋žต์ ์ด๊ณ  ๊ธฐ์ˆ ์ ์ธ ๋‹ค์ด์–ด๊ทธ๋žจ๊ณผ ์„ค๋ช…์ด ์žˆ์œผ๋ฏ€๋กœ ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์€ "์ฒจ๋‹จ ๊ธฐ์ˆ " ์„น์…˜์œผ๋กœ ์Šคํฌ๋กคํ•˜์—ฌ ํ•ด๋‹น ๋‚ด์šฉ์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณตํ†ต ๊ธฐ๋Šฅ

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

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

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

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

F5

์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ฌด์—‡์„, ์™œ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•ด์กŒ์œผ๋ฏ€๋กœ ๋ชฉํ‘œ ๋‹ฌ์„ฑ์„ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๋ช…ํ•˜๋Š” ์ผ๋งŒ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. JPEG ํŒŒ์ผ์„ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๊ณผ์ •์„ ๋– ์˜ฌ๋ ค ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(Bauman National Library์˜ ์œ„ํ‚ค ๋•๋ถ„์—):

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

์ด๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์ฆ‰์‹œ ๋ช‡ ๊ฐ€์ง€ ์˜๊ฒฌ์„ ์ œ์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • JPEG ํŒŒ์ผ์˜ ํฌ๊ธฐ๋Š” ์ผ์ข…์˜ Winrar๋กœ ์••์ถ•ํ•˜์ง€ ์•Š๊ณ ๋„ ์ตœ์ ์˜ ํฌ๊ธฐ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ €์žฅ๋œ ์ •๋ณด(์ด์‚ฐ ์ฝ”์‚ฌ์ธ ๋ณ€ํ™˜, DCT์˜ ์ถœ๋ ฅ)๋งŒ ์ˆ˜์ •ํ•˜์—ฌ ์ตœ์†Œํ•œ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆˆ์— ๋„๋Š” ์‚ฐ์—… ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ์ง€ ์•Š์œผ๋ ค๋ฉด ๊ฐ ๊ฐœ๋ณ„ ์ด๋ฏธ์ง€๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ œํ’ˆ๊ตฐ์ด ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์— ์ ํ•ฉํ•˜๋ฉฐ ์ด์— ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ข‹์€ ๋ฐœํ‘œ์—. ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋ฐœ์ „๋œ ๊ฒƒ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. F5 Andreas Westfeld๊ฐ€ ๋ฐ๊ธฐ ๊ตฌ์„ฑ ์š”์†Œ์˜ DCT ๊ณ„์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ๋žŒ์˜ ๋ˆˆ์€ ๋ณ€ํ™”์— ๊ฐ€์žฅ ๋ฏผ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ๊ธฐ์กด JPEG ํŒŒ์ผ๋กœ ์ž‘์—…ํ•  ๋•Œ์˜ ์ผ๋ฐ˜์ ์ธ ๋ ˆ์ด์•„์›ƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

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

๋ณ€๊ฒฝ ์ž์ฒด๋Š” ์ •์ˆ˜ ๊ณ„์ˆ˜์— ์ ์šฉ๋˜๋ฉฐ ์ ˆ๋Œ€๊ฐ’์„ 5์”ฉ ์ค„์—ฌ์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์••์ถ•์— FXNUMX๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ ์€ JPEG ๊ฐ’์˜ ํ†ต๊ณ„์  ๋ถ„ํฌ๋กœ ์ธํ•ด ์ ˆ๋Œ€๊ฐ’์œผ๋กœ ๊ฐ์†Œ๋œ ๊ณ„์ˆ˜๊ฐ€ ํ—ˆํ”„๋งŒ ์ธ์ฝ”๋”ฉ ํ›„ ๋” ์ ์€ ๋น„ํŠธ๋ฅผ ์ฐจ์ง€ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

XNUMX์ด ํ˜•์„ฑ๋˜๋Š” ๊ฒฝ์šฐ(์†Œ์œ„ ์ถ•์†Œ) ์ด์ „์˜ ๋…๋ฆฝ ๊ณ„์ˆ˜๊ฐ€ RLE๋กœ ์ธ์ฝ”๋”ฉ๋œ XNUMX ์‹œํ€€์Šค์˜ ์ผ๋ถ€๊ฐ€ ๋˜๋ฏ€๋กœ ์ €์žฅ๋œ ์ •๋ณด์˜ ์ˆ˜๊ฐ€ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

์ˆ˜์ •

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

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

์›๋ž˜ F5๋Š” ์ปจํ…Œ์ด๋„ˆ ํฌ๊ธฐ์˜ ์ตœ๋Œ€ 12%๋ฅผ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ ์ด ์ˆ˜์ •์œผ๋กœ ์ตœ๋Œ€ ์šฉ๋Ÿ‰๋„ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌ๊ธฐ์˜ "์ตœ๋Œ€ 12%"๋Š” "์ตœ๋Œ€ 12%"์˜ ํ•ฉ๊ณ„๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Šต๋‹ˆ๋‹ค. "๋ฅผ ๊ฐ ์š”์†Œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์„ฑ๋ฌธํ™”๋œ ์ผ๋ฐ˜ ๊ณ„ํš์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด

์ด์ œ ๋…์ž๊ฐ€ ํ˜ผ๋ž€์— ๋น ์ง€์ง€ ์•Š๋„๋ก ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์„ค๋ช…ํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž๋Š” ์ •๊ทœ์‹๊ณผ ๊ฒ€์ƒ‰ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ง„ ์••์ถ• ๋ฐ์ดํ„ฐ M๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ L์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • FS์— ๋‚˜ํƒ€๋‚˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์š”์†Œ๋Š” MC๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์ผ๋ จ์˜ ๊ณ„์ˆ˜ C๊ฐ€ ํŒŒ์ผ ๋ฐ์ดํ„ฐ์—์„œ ๋””์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค.
    • MC <- MC | ์”จ;
  • ๋งค๊ฐœ๋ณ€์ˆ˜ k๋Š” ๋”์ฐํ•œ ๋ถ€๋“ฑ์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. |M| * 8 / (count_full(MC) + count_ones(MC) * k_rate(k)) < k / ((1 << k) - 1);
  • ๋‹ค์Œ ์ดฌ์˜ n = (1 << k) - 1 MC์—์„œ XNUMX์ด ์•„๋‹Œ ์š”์†Œ์˜ ์ตœํ•˜์œ„ ๋น„ํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  a:
    • ๋งค์ง ํ•ด์‹œ ํ•จ์ˆ˜๊ฐ€ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค. f, n๋น„ํŠธ ๋‹จ์–ด๋ฅผ ๋‚˜ํƒ€๋ƒ„ a k๋น„ํŠธ๋กœ s;
    • ๋ฉด s == 0, ๊ทธ๋Ÿฌ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ ๊ณ„์ˆ˜๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    • ํ•ด๋‹น ๊ณ„์ˆ˜์˜ ์ ˆ๋Œ€ ๊ฐ’์„ ์ค„์ž…๋‹ˆ๋‹ค. s-์•ˆ๋…•, ๋ง์ด ์ข€ ๊ทธ๋ ‡์ง€๋งŒ a;
    • ๊ฐ์†Œ์˜ ๊ฒฐ๊ณผ๋กœ ๊ฐ์†Œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด(๊ณ„์ˆ˜๊ฐ€ 0์ด ๋จ) ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๊ณ„์ˆ˜๋Š” RLE ๋ฐ Huffman์œผ๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ์†Œ์Šค ํŒŒ์ผ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
  • ๋งค๊ฐœ๋ณ€์ˆ˜ k๋Š” ์•„์นด์ด๋ธŒ ํŒŒ์ผ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
  • MD5 ํ•ด์‹œ๋Š” ๊ฐ ํŒŒ์ผ L์—์„œ ์›๋ž˜ ์œ„์น˜ ์ˆœ์„œ๋Œ€๋กœ ๊ณ„์‚ฐ๋˜์–ด ์•„์นด์ด๋ธŒ ํŒŒ์ผ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ด ํ…Œํฌ

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

ํฌ๋กœ์Šค ํ”Œ๋žซํผ์€ libjpeg, pcre ๋ฐtinydir ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์€ ์ผ๋ฐ˜์„ ํ†ตํ•ด ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. make, ๋”ฐ๋ผ์„œ Windows ์‚ฌ์šฉ์ž๋Š” ์ผ๋ถ€ Cygwin์„ ์Šค์Šค๋กœ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ Visual Studio ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์Šค์Šค๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

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

์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€?

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

์ปดํŒŒ์ผ ํ›„์— f5ar ์‹คํ–‰ ํŒŒ์ผ์„ ์–ป์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -a: ./f5ar -a [ะฟะฐะฟะบะฐ ะฟะพะธัะบะฐ] [Perl-ัะพะฒะผะตัั‚ะธะผะพะต ั€ะตะณัƒะปัั€ะฝะพะต ะฒั‹ั€ะฐะถะตะฝะธะต]. ํฌ์žฅ์€ ํŒ€์—์„œ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ./f5ar -p [ะฟะฐะฟะบะฐ ะฟะพะธัะบะฐ] [Perl-ัะพะฒะผะตัั‚ะธะผะพะต ั€ะตะณัƒะปัั€ะฝะพะต ะฒั‹ั€ะฐะถะตะฝะธะต] [ัƒะฟะฐะบะพะฒั‹ะฒะฐะตะผั‹ะน ั„ะฐะนะป] [ะธะผั ะฐั€ั…ะธะฒะฐ], ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ• ํ’€๊ธฐ ./f5ar -u [ั„ะฐะนะป ะฐั€ั…ะธะฒะฐ] [ะธะผั ะฒะพััั‚ะฐะฝะพะฒะปะตะฝะฝะพะณะพ ั„ะฐะนะปะฐ].

์ž‘์—… ์‹œ์—ฐ

์ด ๋ฐฉ๋ฒ•์˜ ํšจ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค์—์„œ ์™„์ „ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋˜๋Š” 225์žฅ์˜ ๊ฐœ ์‚ฌ์ง„ ๋ชจ์Œ์„ ์—…๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. Unsplash. ๊ฐ๊ฐ์€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์‚ฌ์ง„๋ณด๋‹ค ํ’ˆ์งˆ์ด ์•ฝ๊ฐ„ ๋†’์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ธ์ฝ”๋”ฉ ๊ธฐ๋Šฅ์ด ์ „์ฒด ํฌ๊ธฐ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ค‘ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ๊ฐ์€ libjpeg๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์ธ์ฝ”๋”ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์••์ถ• ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ์˜ ์ตœ์•…์˜ ์˜ˆ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด dd๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์˜์˜ 36๋ฏธํ„ฐ(์ „์ฒด ํฌ๊ธฐ์˜ 5%๊ฐ€ ์•ฝ๊ฐ„ ๋„˜๋Š”) ๊ท ์ผํ•˜๊ฒŒ ๋ถ„์‚ฐ๋œ ํŒŒ์ผ์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๊ณผ์ •์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

$ ls
binary_data dogs f5ar
$ du -sh dogs/
633M dogs/
$ du -h binary_data
36M binary_data

$ ./f5ar -p dogs/ .*jpg binary_data dogs.f5ar
Reading compressing file... ok
Initializing the archive... ok
Analysing library capacity... done in 16.8s
Detected somewhat guaranteed capacity of 48439359 bytes
Detected possible capacity of upto 102618787 bytes
Compressing... done in 32.6s
Saving the archive... ok

$ ./f5ar -u dogs/dogs.f5ar unpacked
Initializing the archive... ok
Reading the archive file... ok
Filling the archive with files... done in 1.2s
Decompressing... done in 17.5s
Writing extracted data... ok

$ sha1sum binary_data unpacked
ba7ade4bc77881ab463121e77bbd4d41ee181ae9 binary_data
ba7ade4bc77881ab463121e77bbd4d41ee181ae9 unpacked
$ du -sh dogs/
563M dogs/

์•„๋‹ˆ๋ฉด ํŒฌ๋“ค์„ ์œ„ํ•œ ์Šคํฌ๋ฆฐ์ƒท

์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ๊ณต๊ฐ„ ์ ˆ์•ฝ

๋ณด์‹œ๋‹ค์‹œํ”ผ, ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์— ์žˆ๋Š” ์›๋ž˜ 633 + 36 == 669MB์˜ ๋ฐ์ดํ„ฐ์—์„œ ์šฐ๋ฆฌ๋Š” ~563์˜ ์••์ถ•๋ฅ ์„ ์ œ๊ณตํ•˜๋Š” ๋” ์ข‹์€ 1,188์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๋Š” ๋งค์šฐ ์ž‘์€ ์†์‹ค๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ณ ์ „์ ์ธ ๋ฐฉ๋ฒ•(์˜ˆ:tinyjpg)์„ ์‚ฌ์šฉํ•˜์—ฌ JPEG ํŒŒ์ผ์„ ์ตœ์ ํ™”ํ•  ๋•Œ ์–ป์€ ์†์‹ค๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ฝ ์••์ถ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ณด๊ฐ€ ๋‹จ์ˆœํžˆ "์†์‹ค"๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ F5 ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด "์ตœ์ ํ™”๋œ" ๊ณ„์ˆ˜์˜ ์ˆ˜๊ฐ€ ๊ธฐ์กด ์ตœ์ ํ™”๋ณด๋‹ค ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ˆ˜์ •์ด ์žˆ๋”๋ผ๋„ ๋ˆˆ์—๋Š” ์ „ํ˜€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์Šคํฌ์ผ๋Ÿฌ์—์„œ ๋…์ž๋Š” ๋ˆˆ์œผ๋กœ ์ฐจ์ด๋ฅผ ํ‰๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์›๋ณธ์—์„œ ๋ณ€๊ฒฝ๋œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ฐ’์„ ๋นผ์„œ ์ฐจ์ด๋ฅผ ํ‰๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์ƒ‰์ƒ์ด ์•ฝํ•ด์งˆ์ˆ˜๋ก ์ฐจ์ด๊ฐ€ ์ž‘์•„์ง).

habrastorage์— ๋งž์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ๋งํฌ

์›๋ž˜์˜ - https://i.ibb.co/wNDLNcZ/1.jpg
์ˆ˜์ •๋จ - https://i.ibb.co/qWvpfFM/1.jpg
์ฐจ์ด์  - https://i.ibb.co/2ZzhHfD/diff.jpg

๋Œ€์‹  ๊ฒฐ๋ก 

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

-> GitHub์˜

์ถœ์ฒ˜: www.habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€