C.W.K.
Stream
Lesson 01 of 05 · published

Icon 과 branding — 실제로 중요한 네 PNG

~9 min · icons, branding, manifest, assets

Level 0Extension 입덕
0 XP0/54 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"Chrome 이 icon 을 다섯 곳에 네 size 로 보여 주고, single 128 PNG 가 16 으로 scale 되면 static 처럼 보임. Lesson 1 이 맞는 네 PNG 생산, 다음 sidenote — disabled-state greyscale / dark-mode 고려 / Web Store badge variant."

Chrome 이 요청하는 네 size

  • 16 — chrome://extensions URL 옆 toolbar favicon, 관련 시 URL bar.
  • 32 — Windows scaling 과 일부 platform-specific surface.
  • 48 — extension 관리 page (chrome://extensions card).
  • 128 — Chrome Web Store listing, install prompt, 가끔 New Tab page 에서.

네 size 다 별도 PNG 로 제공. Chrome 이 single 이미지 scale 가능하지만 결과가 pixel-tune 된 variant 보다 visibly 더 나쁨 — 특히 16, 128 의 antialiased detail 이 mush 로 변함.

Size 별 디자인

16 이 가장 어려움. Total 250 pixel 미만, 종종 dark UI chrome 옆에 보임. 실용 제약:

  • 강한 silhouette 하나. Multi-element 로고가 16 에서 사라짐; 가장 인식 가능한 모양 하나 선택.
  • White 와 dark background 둘 다에 high contrast. Chrome 의 UI 가 dark mode 따라 flip.
  • 가는 stroke 피하기. 16 의 1-pixel line 이 grey smear 로 anti-alias; 2-pixel minimum.
  • 실제 context 에서 테스트. Dark mode 의 Mac 에서 chrome://extensions 열기; icon 이 page 에 숨으면 더 강한 silhouette 필요.

128 이 가장 공간 많지만 가장 public 도 — Web Store screenshot 이 full size 로 보임. Hero asset 으로 다루고; 더 작은 size 는 그것에서 derive.

Manifest 선언

Icon list 할 두 자리:

  • icons (top-level) — chrome://extensions 와 Web Store 가 사용. Size 별 key 가진 object.
  • action.default_icon — toolbar 에서 사용. 보통 top-level icons mirror.

같은 경로로 둘 다 선언 가능; Chrome 이 별도 field 로 read 하지만 file 두 set 필요 없음.

Disabled 상태

chrome.action.disable(tabId) 호출 시 Chrome 이 icon 자동 greyscale 처리 — 별도 disabled asset 필요 없음. Default greyscale 변환이 대부분 icon 에 동작. Greyscale 에서 사라지는 element (low-contrast color) 가진 거면, 손-tune 된 grey variant 가진 수동 setIcon 제공.

Dark mode

Chrome 이 dark mode 위해 icon 자동 flip 안 함. Icon 이 dark-on-transparent 면 Chrome dark toolbar 에 invisible. 두 option:

  • Outline 접근 — icon 을 solid fill 없이 주로 stroke-based 로 유지. 두 background 다 동작.
  • Programmatic swap — SW 에서 matchMedia('(prefers-color-scheme: dark)') listen, 필요할 때 light variant 와 chrome.action.setIcon 호출. 더 많은 work; v1 엔 거의 가치 없음.

ClipDeck v1 이 16 에 outline 접근 사용 — paperclip outline, brand color stroke, fill 없음. Light 와 dark Chrome 둘 다 깔끔하게 읽힘.

Web Store asset pack

Chrome Web Store 가 extension icon 외에도 필요 — 별도 upload 하는 store-only asset:

  • 128 × 128 store icon — 128 의 manifest icon 과 같음.
  • 440 × 280 small promo tile — store 검색 결과에 보임.
  • 1400 × 560 marquee promo — featured-extension surface (indie extension 엔 드묾; 어쨌든 design).
  • Screenshot — 1280 × 800 또는 640 × 400. 최소 하나; 최대 다섯. 가장 본 asset; marketing 으로 다루기.

Submission 전 screenshot set 준비. Web Store reviewer 가 screenshot 품질을 '이게 실제 software 인지' 로 count, bare manifest-only listing 은 extension 이 뭐 하는지 communicate 안 해서 거부됨.

16 / 32 / 48 / 128 의 네 PNG, 강한 silhouette 하나, 두 background 에 contrast. 128 이 hero; 16 이 design 이 extension-bar scale 에서 살아남는지 test.
한 master 에서 네 size 생성. Vector 도구 (Figma, Sketch, Illustrator) 의 128 이상에서 한 번 design. 네 canvas size 명시적 설정해서 export, 각자 separately optimize — 16 에서 보통 silhouette 손-tweak 해서 읽히게. Pixel-perfect 16 이 10 분 걸리는데 "그냥 128 resize" 가 절대 절약 못 해.

Code

manifest.json — top-level 과 action icon 선언 둘 다·json
{
  "icons": {
    "16": "icons/16.png",
    "32": "icons/32.png",
    "48": "icons/48.png",
    "128": "icons/128.png"
  },
  "action": {
    "default_icon": {
      "16": "icons/16.png",
      "32": "icons/32.png",
      "48": "icons/48.png",
      "128": "icons/128.png"
    },
    "default_title": "ClipDeck",
    "default_popup": "popup.html"
  }
}
Shell — icon variant 빠른 생성 (16 은 따로 손-tune)·bash
# ImageMagick 통해 1024 master 에서 네 PNG size 생성
magick clipdeck-master.png -resize 128x128 icons/128.png
magick clipdeck-master.png -resize 48x48 icons/48.png
magick clipdeck-master.png -resize 32x32 icons/32.png
magick clipdeck-master.png -resize 16x16 icons/16.png

# 더 똑똑: 16 을 따로 design (손-tune silhouette), 다음 preview 위해서만 scale up
# magick clipdeck-master-16-hand.png icons/16.png

External links

Exercise

기존 icon master 에서 16/32/48/128 의 네 PNG file 생산 (또는 public-domain favicon 에서 placeholder 생성). clipdeck/icons/ 에 drop. manifest.json 의 top-level icons AND action.default_icon 에 선언 (첫 번째 code block). Extension reload. 각 size 가 올바르게 도착하는지 확인하려고 네 자리 보기: (1) toolbar — 16/32 사용, (2) chrome://extensions card — 48 사용, (3) chrome://extensions Details page — 128 사용, (4) chrome://extensions/?id=... 열렸을 때 URL bar — 16 사용. 그 중 어느 거든 blurry 나 stretched 보이면, 잘못된 size load 됨; manifest 경로와 각 PNG 가 실제로 선언된 해상도인지 확인.
Hint
High-DPI Mac 의 toolbar icon 이 blurry 보이면, 32 가 scale 된 16 일 수도 — master 에서 실제 32 re-export. chrome://extensions card 가 pixelate 면 48 이 문제. Chrome 이 surface 별 size 를 deterministic 하게 선택; 문제 surface 골라 manifest 가 load 한다고 말하는 file 찾기. Chrome Web Store 가 선언-size-vs-실제-pixel-dimension mismatch 가진 submission 거부, 결국 submission 위해 honest size 가 중요.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.