Upng.js: ๋””๋”๋ง ์‚ฌ์šฉ

์— ๋งŒ๋“  2018๋…„ 03์›” 27์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: photopea/UPNG.js

๋‹ค์ฑ„๋กœ์šด ์ด๋ฏธ์ง€์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์†Œ์Šค ์ด๋ฏธ์ง€ [174285 B]
firefox-512

upng ํ›„ ์›น ์ธํ„ฐํŽ˜์ด์Šค [69927 B]
firefox-512 upng

pngquant์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋” ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค. [69932B]
firefox-512 pngquant

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

์˜ˆ, pngquant๋Š” ํ‰๊ท  ์ œ๊ณฑ ์˜ค์ฐจ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋†’์€ ์˜์—ญ์—๋งŒ ๋””๋”๋ง์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋””๋”๋ง์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์˜์—ญ์— ์ถ”๊ฐ€ ๋…ธ์ด์ฆˆ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

pngquant๋Š” ๋˜ํ•œ ์—์ง€ ๊ฐ์ง€(Prewitt ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์œ ์‚ฌ)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์—์ง€์—์„œ ๋””๋”๋ง์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•คํ‹ฐ ์•จ๋ฆฌ์–ด์‹ฑ์ด ๋ชจํ”ผ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

pngquant์—์„œ ์‹œ๊ฐ„์˜ 90%๋Š” K-ํ‰๊ท ์˜ ์ถ”๊ฐ€ ์‹คํ–‰์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. --speed 10 ํ•˜๋Š” ๊ฒฝ์šฐ ์ „์ฒด ์žฌ์••์ถ•(i7 2.3Ghz์—์„œ)์€ ~80ms ๋””๋”๋ง, 50ms ๋น„๋””๋”๋ง์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

(BTW, TinyPNG์—๋Š” ์ž์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ pngquant์šฉ GUI์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.)

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

๊ณผ๊ฑฐ์— Floyd-Steinberg ๋””๋”๋ง์„ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์••์ถ• ์นœํ™”์ ์ธ ๋””๋”๋ง์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

pngquant๋Š” ๋” ๋‚˜์€ ์ƒ‰์ƒ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ˆ˜์ •๋œ Floyd-Steinberg๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

์••์ถ• ์นœํ™”์ ์ธ ๋””๋”๋ง์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@kornelski์—๊ฒŒ ๋ฌผ์–ด๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์„ธ ๊ฐ€์ง€ ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

  • A: 50์ƒ‰: 15kB
  • B: 50์ƒ‰ + ๋””๋”๋ง: 23kB
  • C: 100์ƒ‰: 22kB

B๋Š” C๋งŒํผ ๋ฉ‹์ ธ ๋ณด์ด์ง€๋งŒ ์•ฝ๊ฐ„ ๋” ์ปธ๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ์ƒ‰์ƒ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋””๋”๋ง๋ณด๋‹ค ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค(๋‘˜ ๋‹ค ํŒŒ์ผ ํฌ๊ธฐ ์ฆ๊ฐ€).

๋ช‡ ๊ฐ€์ง€ ๋ฐ˜๋ณต์ ์ธ ํŒจํ„ด์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋””๋”๋ง์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Deflate ์•Œ๊ณ ๋ฆฌ์ฆ˜์— "์นœ์ˆ™ํ•ด์•ผ" ํ•ฉ๋‹ˆ๋‹ค. B๊ฐ€ 20kB๋งŒ ๊ฐ–๋„๋ก ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ž˜์„œ ์—ฌ์ „ํžˆ C๋งŒํผ ํ›Œ๋ฅญํ•˜์ง€๋งŒ ๋” ์ž‘์Œ).

ใ……ใ…‚. ๋‚˜๋Š” ๋˜ํ•œ pngquant๊ฐ€ ๋” ๋‚˜์€ Deflate(UPNG.js๋ณด๋‹ค ์•ฝ 100๋ฐฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ: ์˜ˆ: 30ms ๋Œ€ 3000ms)๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๋‚ด๊ฐ€ ํ–ˆ๋˜ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋””๋”๋ง์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ B๊ฐ€ 20kB๋งŒ ๊ฐ–๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•Œ ๊ฒ ์–ด์š”.
์ด ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋””๋”๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

pngquant๋Š” mse ์˜ค๋ฅ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ํ’ˆ์งˆ ์„ค์ •์„ ๊ฐ€์ง€๋ฉฐ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฌ๊ฑฐ๋‚˜ ํ’ˆ์งˆ์ด ํฌ๊ฒŒ ์ €ํ•˜๋˜๋Š” ๊ฒฝ์šฐ ํŒŒ์ผ์„ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๊ฐ€ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
https://encode.ru/threads/1757-Lossy-DEFLATE-lossy-PNG

๊ทธ๋ฆฌ๊ณ  ์ด ํ”„๋กœ์ ํŠธ๋Š” ํŠนํžˆ
https://github.com/foobaz/lossypng

์˜ˆ, pngquant๋Š” ํ‰๊ท  ์ œ๊ณฑ ์˜ค์ฐจ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋†’์€ ์˜์—ญ์—๋งŒ ๋””๋”๋ง์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋””๋”๋ง์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์˜์—ญ์— ์ถ”๊ฐ€ ๋…ธ์ด์ฆˆ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

pngquant๋Š” ๋˜ํ•œ ์—์ง€ ๊ฐ์ง€(Prewitt ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์œ ์‚ฌ)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์—์ง€์—์„œ ๋””๋”๋ง์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•คํ‹ฐ ์•จ๋ฆฌ์–ด์‹ฑ์ด ๋ชจํ”ผ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

pngquant์—์„œ ์‹œ๊ฐ„์˜ 90%๋Š” K-ํ‰๊ท ์˜ ์ถ”๊ฐ€ ์‹คํ–‰์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. --speed 10 ํ•˜๋Š” ๊ฒฝ์šฐ ์ „์ฒด ์žฌ์••์ถ•(i7 2.3Ghz์—์„œ)์€ ~80ms ๋””๋”๋ง, 50ms ๋น„๋””๋”๋ง์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

(BTW, TinyPNG์—๋Š” ์ž์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ pngquant์šฉ GUI์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.)

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

๊ด€๋ จ ๋ฌธ์ œ

HRK44 picture HRK44  ยท  9์ฝ”๋ฉ˜ํŠธ

MartinMuzatko picture MartinMuzatko  ยท  6์ฝ”๋ฉ˜ํŠธ

mn4367 picture mn4367  ยท  16์ฝ”๋ฉ˜ํŠธ

thalesfsp picture thalesfsp  ยท  3์ฝ”๋ฉ˜ํŠธ

akshaysrin picture akshaysrin  ยท  3์ฝ”๋ฉ˜ํŠธ