๋ฐœํ–‰์ผ:

์ˆ˜์ •์ผ:

์ด๋ฏธ์ง€ ์„ ๋ช…๋„ ์ตœ์ ํ™”: image-rendering ์†์„ฑ ๋ฐ ํ‹ฐ์Šคํ† ๋ฆฌ ์ธ๋„ค์ผ ํ™”์งˆ ๊ฐœ์„  ๋ฐฉ๋ฒ•

CSS image-rendering ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ์™€ ๋ธ”๋กœ๊ทธ์˜ ์ด๋ฏธ์ง€ ์„ ๋ช…๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ณ  ํŠนํžˆ ํ‹ฐ์Šคํ† ๋ฆฌ ์ธ๋„ค์ผ ํ๋ฆผ ํ˜„์ƒ์„ ๊ฐœ์„ ํ•˜๋Š”crisp-edges ๋ฐ pixelated ์†์„ฑ ํ™œ์šฉ๋ฒ•, ๊ณ ํ•ด์ƒ๋„(๋ ˆํ‹ฐ๋‚˜) ๋””์Šคํ”Œ๋ ˆ์ด ๋Œ€์‘ ์ „๋žต, Canvas ์ด๋ฏธ์ง€ ํ’ˆ์งˆ ์„ค์ • ๋“ฑ ์ตœ์ ํ™” ๊ธฐ์ˆ ์„ ํ†ตํ•ดํ•˜๊ณ  ์ด๋ฏธ์ง€ ํ™”์งˆ ๊ฐœ์„ ๋ฐฉ๋ฒ• ์ž…๋‹ˆ๋‹ค.


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

ํ‹ฐ์Šคํ† ๋ฆฌ ์ธ๋„ค์ผ ํ๋ฆผ ํ˜„์ƒ, image-rendering์œผ๋กœ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•

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

1. image-rendering ์†์„ฑ์˜ ๊ธฐ๋ณธ ์ดํ•ด ๋ฐ ๋ธŒ๋ผ์šฐ์ € ์ œ์–ด ์›๋ฆฌ

image-rendering์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๋ Œ๋”๋ง(ํ”ฝ์…€์„ ์กฐ์ •ํ•ด์„œ ๋ณด์—ฌ์ค„์ง€) ๊ฒฐ์ •ํ•˜๋Š” CSS ์†์„ฑ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์ด๋ฏธ์ง€ ํ™•๋Œ€ ์‹œ ์„ ๋ช…๋„ ์œ ์ง€์™€ ๋ถ€๋“œ๋Ÿฌ์šด ๋ณด๊ฐ„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

1.1 ์ฃผ์š” image-rendering ์†์„ฑ๊ฐ’ ์„ค๋ช…

image-rendering ์†์„ฑ๋ณ„ ๋ Œ๋”๋ง ๋ฐฉ์‹
์†์„ฑ๊ฐ’ ์„ค๋ช…
auto ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ (๋ถ€๋“œ๋Ÿฌ์šด ๋ณด๊ฐ„, ๊ธฐ๋ณธ๊ฐ’)
crisp-edges ๊ณ„๋‹จ ํ˜„์ƒ์„ ์œ ์ง€ํ•˜์—ฌ ์„ ๋ช…ํ•œ ๊ฒฝ๊ณ„ ์ œ๊ณต (์•„์ด์ฝ˜, ๋กœ๊ณ ์— ์ ํ•ฉ)
pixelated ํ”ฝ์…€ ์•„ํŠธ ์Šคํƒ€์ผ ์œ ์ง€ (๋„ํŠธ ๊ทธ๋ž˜ํ”ฝ์— ์ ํ•ฉ)
-webkit-optimize-contrast ์›นํ‚ท ๊ณ„์—ด ๋ธŒ๋ผ์šฐ์ €(์‚ฌํŒŒ๋ฆฌ, ํฌ๋กฌ ๋“ฑ)์—์„œ ์„ ๋ช…๋„ ํ–ฅ์ƒ (๋น„ํ‘œ์ค€)
.example-img {
 image-rendering: crisp-edges; /* ํ‘œ์ค€ */
 image-rendering: -webkit-optimize-contrast; /* ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ (๋น„ํ‘œ์ค€) */
 image-rendering: -moz-crisp-edges; /* ํŒŒ์ด์–ดํญ์Šค */
 -ms-interpolation-mode: nearest-neighbor; /* IE ์ „์šฉ */
}

1.2 image-rendering ์†์„ฑ์ด ํ•„์š”ํ•œ ์ฝ˜ํ…์ธ  ์œ ํ˜•

  • ๋„ํŠธ ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„ ๊ทธ๋ž˜ํ”ฝ ๋ฐ ํ”ฝ์…€ ์•„ํŠธ
  • ์ •๊ตํ•œ ์•„์ด์ฝ˜, ๋กœ๊ณ  ๋ฐ ๋ช…ํ™•ํ•œ ๋ผ์ธ์ด ํ•„์š”ํ•œ ๋””์ž์ธ ์š”์†Œ
  • ์˜๋ฃŒ์‚ฐ์—…์šฉ ๊ณ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€ ๋ทฐ์–ด
  • ์ง€๋„, ๋„ํ‘œ ๋“ฑ ์„ ๋ช…ํ•œ ๋ผ์ธ๊ณผ ํ…์ŠคํŠธ๊ฐ€ ์ค‘์š”ํ•œ ์ฝ˜ํ…์ธ 

2. ์ด๋ฏธ์ง€ ํ™”์งˆ ๊ฐœ์„  ์‹ค์ „ ์ ์šฉ ์‚ฌ๋ก€ ๋ฐ SEO ์—ฐ๊ด€์„ฑ

์ด ์†์„ฑ์€ ๋‹ค์†Œ ๊ธฐ์ˆ ์ ์ธ ์„ฑ๊ฒฉ์„ ์ง€๋‹ˆ๊ณ  ์žˆ์ง€๋งŒ, ๋ธ”๋กœ๊ทธ ์šด์˜์ž ์ž…์žฅ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋˜๋ ทํ•˜๊ฒŒ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

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

2.1 ์ธ๋„ค์ผ ์ด๋ฏธ์ง€ ์ตœ์ ํ™” ๋ฐ CSS ์ œ์–ด

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

2.2 ์ธ๋„ค์ผ CSS ๊ตฌ์กฐ ์˜ˆ์‹œ์™€ ์†์„ฑ ์„ค๋ช…

div class="gallery"
 img src="product.webp" 
 class="optimized-thumb" 
 width="400" 
 height="300" 
 alt="์ œํ’ˆ ์ธ๋„ค์ผ"
/div

style
.optimized-thumb {
 width: 100%;
 height: auto;
 image-rendering: crisp-edges;
 object-fit: contain;
 border: 1px solid #f0f0f0;
 transition: transform 0.3s ease;
}

.optimized-thumb:hover {
 transform: scale(1.03);
 filter: contrast(1.1);
}
/style

2.3 ํ‹ฐ์Šคํ† ๋ฆฌ ์ด๋ฏธ์ง€ ์ธ๋„ค์ผ ์ฝ”๋“œ ์ง์ ‘ ์ˆ˜์ •

ํ‹ฐ์Šคํ† ๋ฆฌ๋Š” ์ด๋ฏธ์ง€ ์น˜ํ™˜์ž({์ด๋ฏธ์ง€}) ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ๋„ค์ผ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ธ๋„ค์ผ ๋กœ๋“œ URL์˜ ํ•ด์ƒ๋„ ์น˜ํ™˜์ž(์˜ˆ: C58x58)๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜์—ฌ ๋” ํฐ ํ•ด์ƒ๋„์˜ ์ธ๋„ค์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋ Œ๋”๋ง ์ œ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์›๋ณธ ์ฝ”๋“œ

src="//i1.daumcdn.net/thumb/C58x58.fwebp.q85/?fname=" alt=""

์ˆ˜์ •ํ•œ ์ฝ”๋“œ (์ธ๋„ค์ผ ํฌ๊ธฐ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋†’์—ฌ ์„ ๋ช…๋„ ๊ฐœ์„ )

src="//i1.daumcdn.net/thumb/C600x336.fwebp.q85/?fname=" alt=""
ํ‹ฐ์Šคํ† ๋ฆฌ ์ธ๋„ค์ผ ์ด๋ฏธ์ง€ ์„ ๋ช…ํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

2.4 ๊ณ ํ•ด์ƒ๋„(๋ ˆํ‹ฐ๋‚˜) ๋””์Šคํ”Œ๋ ˆ์ด ๋Œ€์‘ ์ „๋žต

๊ณ ํ•ด์ƒ๋„ ๋””์Šคํ”Œ๋ ˆ์ด์—์„œ๋Š” ์ผ๋ฐ˜ ํ•ด์ƒ๋„์˜ ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํ”ฝ์…€ ๋ฐ€๋„ ์ฐจ์ด๋กœ ์ธํ•ด ๋ฟŒ์˜‡๊ฒŒ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ์™€ image-rendering ์†์„ฑ์„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

@media (-webkit-min-device-pixel-ratio: 2), 
 (min-resolution: 192dpi) {
 .high-dpi-img {
 background-image: url('image@2x.jpg'); /* 2๋ฐฐ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€ ์กฐ๊ฑด๋ถ€ ๋กœ๋”ฉ */
 image-rendering: crisp-edges; /* ์„ ๋ช…๋„ ์œ ์ง€ */
 }
}

์ด ์ „๋žต์€ ์ผ๋ฐ˜ ๊ธฐ๊ธฐ์—๋Š” ๊ฐ€๋ฒผ์šด ์ด๋ฏธ์ง€๋ฅผ, ๊ณ ํ•ด์ƒ๋„ ๊ธฐ๊ธฐ์—๋Š” ์„ ๋ช…ํ•œ ํฐ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์ฃผ์–ด ์†๋„์™€ ํ’ˆ์งˆ์˜ ๊ท ํ˜•์„ ๋งž์ถฅ๋‹ˆ๋‹ค.

3. ์„ฑ๋Šฅ ๋น„๊ต ๋ฐ ์ด๋ฏธ์ง€ ์ตœ์ ํ™” ๋‹จ๊ณ„๋ณ„ ํŒ

3.1 ๋ Œ๋”๋ง ๋ฐฉ์‹ ๋น„๊ตํ‘œ: ์„ ๋ช…๋„, ์„ฑ๋Šฅ, ํ™œ์šฉ ์‚ฌ๋ก€

์•„๋ž˜๋Š” CSS image-rendering ์†์„ฑ์˜ ๋Œ€ํ‘œ์ ์ธ ๋ Œ๋”๋ง ๋ฐฉ์‹ 3๊ฐ€์ง€์— ๋Œ€ํ•œ ์„ ๋ช…๋„, ์„ฑ๋Šฅ, ํ™œ์šฉ ์‚ฌ๋ก€ ๋น„๊ตํ‘œ์ž…๋‹ˆ๋‹ค.

image-rendering ๋ฐฉ์‹๋ณ„ ํŠน์„ฑ ๋น„๊ต
๋ Œ๋”๋ง ๋ฐฉ์‹ ์„ ๋ช…๋„ ์„ฑ๋Šฅ ์‚ฌ๋ก€
๊ธฐ๋ณธ ๋ฆฌ์‚ฌ์ด์ง• (auto) โ–ณ โ˜…โ˜…โ˜… ์ผ๋ฐ˜ ์‚ฌ์ง„ (๋ถ€๋“œ๋Ÿฌ์šด ํ™•๋Œ€ ์ถ•์†Œ)
crisp-edges โ˜…โ˜…โ˜… โ˜…โ˜… ์•„์ด์ฝ˜, ๋กœ๊ณ  (๋‚ ์นด๋กœ์šด ๊ฒฝ๊ณ„ ์œ ์ง€)
pixelated โ˜…โ˜… โ˜…โ˜…โ˜… ๋„ํŠธ ๊ทธ๋ž˜ํ”ฝ (ํ”ฝ์…€ ์˜๋„์  ํ™•๋Œ€)

3.2 ์ด๋ฏธ์ง€ ์ตœ์ ํ™” ๋‹จ๊ณ„๋ณ„ ์ข…ํ•ฉ ํŒ

  1. ์›๋ณธ ํ•ด์ƒ๋„ ํ™•๋ณด: ํ‘œ์‹œ ํฌ๊ธฐ์˜ 2๋ฐฐ ์ด์ƒ ํ•ด์ƒ๋„๋กœ ์ œ์ž‘ํ•ด์•ผ ๊ณ ํ•ด์ƒ๋„ ํ™˜๊ฒฝ์—์„œ ์„ ๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  2. ํฌ๋งท ์„ ํƒ: WebP(์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €), PNG(ํˆฌ๋ช…๋„, ์•„์ด์ฝ˜), JPEG(์ผ๋ฐ˜ ์‚ฌ์ง„) ์ˆœ์œผ๋กœ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.
  3. CSS ์„ค์ •: image-rendering, object-fit ๋“ฑ ์†์„ฑ์„ ์กฐํ•ฉํ•˜์—ฌ ์ด๋ฏธ์ง€์˜ ํ‘œํ˜„ ๋ฐฉ์‹์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
  4. ์„ฑ๋Šฅ ์ ๊ฒ€: Chrome DevTools, Lighthouse ๋“ฑ์œผ๋กœ ๋กœ๋”ฉ ์†๋„์™€ ํ’ˆ์งˆ์„ ํ…Œ์ŠคํŠธํ•˜์—ฌ ๊ท ํ˜•์ ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

4. ๋ธ”๋กœ๊ทธ ์ด๋ฏธ์ง€ ๊ฐœ์„  ๊ณ ๊ธ‰ ํ™œ์šฉ ํ…Œํฌ๋‹‰

4.1 Canvas ์ด๋ฏธ์ง€ ํ’ˆ์งˆ ์„ค์ • (imageSmoothingEnabled)

HTML5์˜ Canvas ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ฆฌ๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๋ Œ๋”๋ง ํ’ˆ์งˆ์„ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • imageSmoothingEnabled ์†์„ฑ์€ ์บ”๋ฒ„์Šค์—์„œ ์ด๋ฏธ์ง€ ํ™•๋Œ€/์ถ•์†Œ ์‹œ ํ”ฝ์…€ ๋ณด๊ฐ„(๋ธ”๋Ÿฌ) ํšจ๊ณผ๋ฅผ ์ผœ๊ฑฐ๋‚˜ ๋„๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
  • false๋กœ ์„ค์ •ํ•˜๋ฉด ํ”ฝ์…€ ๋‹จ์œ„๊ฐ€ ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€๋˜์–ด, ๋„ํŠธ ๊ทธ๋ž˜ํ”ฝ์ด๋‚˜ ํ”ฝ์…€ ์•„ํŠธ๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

ctx.imageSmoothingEnabled = false;
ctx.webkitImageSmoothingEnabled = false; // ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ์šฉ
ctx.mozImageSmoothingEnabled = false; // ํŒŒ์ด์–ดํญ์Šค์šฉ

4.2 SVG ํ•„ํ„ฐ ๊ฒฐํ•ฉ ์˜ˆ์‹œ

SVG(Scalable Vector Graphics) ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ์„ ๋ช…๋„๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”ฝ ํšจ๊ณผ๋ฅผ ์ •๊ตํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ๋ฆผ(feGaussianBlur), ๋ฐ๊ธฐ(feComponentTransfer), ๊ทธ๋ฆผ์ž(feDropShadow) ํšจ๊ณผ๋ฅผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

svg width="0" height="0" style="position:absolute; visibility:hidden;"
 defs
 filter id="combinedFilter" x="-20%" y="-20%" width="140%" height="140%"
 !-- 1. ํ๋ฆผ ํšจ๊ณผ --
 feGaussianBlur in="SourceGraphic" stdDeviation="3" result="blurred"/
 
 !-- 2. ๋ฐ๊ธฐ ์กฐ์ ˆ --
 feComponentTransfer in="blurred" result="brightened"
 feFuncR type="linear" slope="1.2" intercept="0"/
 feFuncG type="linear" slope="1.2" intercept="0"/
 feFuncB type="linear" slope="1.2" intercept="0"/
 /feComponentTransfer
 
 !-- 3. ๊ทธ๋ฆผ์ž ํšจ๊ณผ --
 feDropShadow dx="4" dy="4" stdDeviation="2" flood-color="rgba(0,0,0,0.5)" /
 /filter
 /defs
 /svg

5. ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ € ๋Œ€์‘ ๋ฐ ์ตœ์ข… ์ตœ์ ํ™” ์ฝ”๋“œ

5.1 ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ ํ™•๋ณด

image-rendering ์†์„ฑ์€ ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ ์†์„ฑ๊ฐ’์„ ์ง€์›ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์–ด, ๋ชจ๋“  ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ผํ•œ ์„ ๋ช…๋„๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ์†์„ฑ์„ ๋™์‹œ์— ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

.img-optimized {
 image-rendering: crisp-edges;
 image-rendering: -webkit-optimize-contrast;
 image-rendering: -moz-crisp-edges;
 -ms-interpolation-mode: nearest-neighbor;
}
ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ € image-rendering ์†์„ฑ ์ •๋ฆฌ
์†์„ฑ ์„ค๋ช… ๋Œ€์ƒ ๋ธŒ๋ผ์šฐ์ €
image-rendering: crisp-edges; ์ด๋ฏธ์ง€ ํ™•๋Œ€ ์‹œ, ํ๋ฆฌ์ง€ ์•Š๊ณ  ์„ ๋ช…ํ•˜๊ฒŒ(ํ”ฝ์…€ ์œ ์ง€) ํ‘œ์‹œ ํ‘œ์ค€ ๋ธŒ๋ผ์šฐ์ €
image-rendering: -webkit-optimize-contrast; ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ์—์„œ ๋Œ€๋น„๋ฅผ ์œ ์ง€ํ•œ ๊ณ ํ™”์งˆ ๋ Œ๋”๋ง (๋น„ํ‘œ์ค€) WebKit ๊ณ„์—ด (Chrome, Safari)
image-rendering: -moz-crisp-edges; ํŒŒ์ด์–ดํญ์Šค ์ „์šฉ ํ”ฝ์…€ ์„ ๋ช…๋„ ์œ ์ง€ ์˜ต์…˜ Firefox
-ms-interpolation-mode: nearest-neighbor; IE ์ „์šฉ ์ด๋ฏธ์ง€ ํ™•๋Œ€ ์‹œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ”ฝ์…€ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ Internet Explorer

5.2 ๋ธ”๋กœ๊ทธ ์ด๋ฏธ์ง€ ์„ ๋ช…๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•œ ์ตœ์ข… ๊ถŒ์žฅ ์ „๋žต

์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋Š” ๋‹จ์ˆœํžˆ CSS ์†์„ฑ ํ•˜๋‚˜๋งŒ์œผ๋กœ ํ•ด๊ฒฐ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข…ํ•ฉ์  ์ ‘๊ทผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:

  • ๊ณ ํ’ˆ์งˆ ์›๋ณธ ํ™•๋ณด (ํ‘œ์‹œ ํฌ๊ธฐ์˜ 2๋ฐฐ ํ•ด์ƒ๋„)
  • ์ ์ ˆํ•œ ์ด๋ฏธ์ง€ ํฌ๋งท(WebP ์šฐ์„ ) ์„ ํƒ
  • ์ƒํ™ฉ์— ๋งž๋Š” image-rendering ์†์„ฑ ์ ์šฉ
  • ๊ณ ํ•ด์ƒ๋„ ๋Œ€์‘ ๋ฐ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋ณ‘ํ–‰

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

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ) - ์ด๋ฏธ์ง€ ๋ Œ๋”๋ง ์ตœ์ ํ™”


Q1: ์™œ ์ด๋ฏธ์ง€๊ฐ€ ๋ธ”๋กœ๊ทธ์—์„œ ๋ฟŒ์˜‡๊ฒŒ ๋ณด์ด๋‚˜์š”?

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์ž๋™ ๋ฆฌ์‚ฌ์ด์ง•ํ•˜๋ฉด์„œ ๋ถ€๋“œ๋Ÿฌ์šด ๋ณด๊ฐ„(anti-aliasing)์ด ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ณด์ด๊ฒŒ ํ•˜๋ ค ํ•˜์ง€๋งŒ, ์ด ๊ณผ์ •์—์„œ ์„ ๋ช…๋„๊ฐ€ ๋–จ์–ด์ง€๋ฉฐ ๋ฟŒ์˜‡๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค. image-rendering ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ ๋ช…๋„๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q2: ์–ด๋–ค image-rendering ์†์„ฑ์ด ๊ฐ€์žฅ ์„ ๋ช…ํ•œ๊ฐ€์š”?

์ด๋ฏธ์ง€์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์‚ฌ์ง„์ด ์•„๋‹Œ ์•„์ด์ฝ˜, ๋กœ๊ณ , ํ”ฝ์…€ ์•„ํŠธ์™€ ๊ฐ™์ด ์„ ๋ช…ํ•œ ๊ฒฝ๊ณ„๊ฐ€ ์ค‘์š”ํ•œ ์ด๋ฏธ์ง€์—๋Š” crisp-edges๋‚˜ pixelated ์†์„ฑ์ด ๋šœ๋ ทํ•œ ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ๊ฐ€์žฅ ์„ ๋ช…ํ•˜๊ฒŒ ๋А๊ปด์ง‘๋‹ˆ๋‹ค.

Q3: ํ‹ฐ์Šคํ† ๋ฆฌ ์ธ๋„ค์ผ์„ ๋” ์„ ๋ช…ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ•์€?

๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ์ธ๋„ค์ผ ์ด๋ฏธ์ง€ ๋กœ๋“œ URL์˜ ํ•ด์ƒ๋„ ์น˜ํ™˜์ž(์˜ˆ: C58x58)๋ฅผ ๋” ํฐ ๊ฐ’(์˜ˆ: C600x336)์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์›๋ณธ ํ’ˆ์งˆ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค. ๋‘˜์งธ, ํ•ด๋‹น ์ธ๋„ค์ผ CSS์— image-rendering: crisp-edges;๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ณด๊ฐ„ ํšจ๊ณผ๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

Q4: ๊ณ ํ•ด์ƒ๋„(๋ ˆํ‹ฐ๋‚˜) ๋””์Šคํ”Œ๋ ˆ์ด์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ•ด์•ผ ๊ฐ€์žฅ ์„ ๋ช…ํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

2๋ฐฐ ํ•ด์ƒ๋„ ์ด๋ฏธ์ง€๋ฅผ ์ œ์ž‘ํ•˜๊ณ , CSS ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ(์˜ˆ: @media (-webkit-min-device-pixel-ratio: 2))๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ํ•ด์ƒ๋„ ํ™˜๊ฒฝ์ผ ๋•Œ๋งŒ ํ•ด๋‹น 2๋ฐฐ ์ด๋ฏธ์ง€๋ฅผ ์กฐ๊ฑด๋ถ€๋กœ ๋กœ๋”ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, image-rendering๊ณผ srcset ์†์„ฑ์„ ํ•จ๊ป˜ ํ™œ์šฉํ•˜์—ฌ ์„ ๋ช…๋„์™€ ๋กœ๋”ฉ ์†๋„์˜ ๊ท ํ˜•์„ ๋งž์ถฅ๋‹ˆ๋‹ค.