이미지

대표 색상 추출

이미지에서 주요 색상 팔레트를 추출(HEX·RGB)

이미지를 선택하면 대표 색상 팔레트가 여기 표시됩니다.

Select an image to see its color palette here.

대표 색상 추출이란?

업로드한 이미지의 픽셀을 분석해 가장 많이 사용된 대표 색상을 뽑아 HEX·RGB 코드로 보여주는 도구입니다. 브라우저 안에서만 계산이 이루어져 서버 업로드 없이 즉시 결과를 확인할 수 있습니다.

사용 방법

이미지를 선택하거나 끌어다 놓으면 분석이 자동 시작됩니다. 추출 색상 개수를 5·6·8·10개 중에서 선택할 수 있고, 각 스와치를 클릭하면 HEX 코드가 클립보드로 복사됩니다.

추출 원리

이미지를 작은 크기로 축소해 캔버스에 그린 뒤 모든 픽셀의 RGB 값을 읽고, 비슷한 색끼리 양자화(quantization)해 버킷으로 묶습니다. 빈도가 높은 버킷 순서로 대표 색상을 선정합니다.

개인정보 · 안전성

이미지 로딩·분석·미리보기까지 전 과정이 브라우저 안에서만 이루어지며, 파일은 서버로 전송되거나 저장되지 않습니다.

참고: 추출된 색상은 원본 이미지의 픽셀 분포를 근사한 값으로, 실제 인쇄물·모니터 색상과 미세한 차이가 있을 수 있습니다.
팔레트 추출 원리 — 이 도구의 양자화 방식

이 도구는 업로드한 이미지를 캔버스에 그리기 전에 긴 변 기준 최대 160px로 축소합니다. 대용량 사진이라도 픽셀 수를 크게 줄여 분석 속도를 확보하기 위한 성능 최적화입니다. 축소된 이미지의 모든 픽셀을 순회하며(완전 투명 픽셀은 제외) 각 R·G·B 채널을 상위 4비트만 사용해 16단계로 양자화합니다. 즉 0~255의 색상값을 16×16×16=4096개 버킷 중 하나로 묶는 방식입니다. 같은 버킷에 속한 픽셀들의 평균 RGB를 그 버킷의 대표색으로 삼고, 픽셀이 가장 많이 모인(빈도가 높은) 버킷 순서로 상위 N개를 골라 팔레트로 보여줍니다. 이는 정교한 median-cut이나 k-means 군집화 대신 단순 비트 절삭 양자화를 쓰는 경량 구현으로, 계산이 빨라 브라우저에서도 즉시 결과를 낼 수 있습니다.

추출한 색을 디자인에 쓰는 법 — 60-30-10 규칙

추출한 색을 실제 디자인에 쓸 때는 인테리어·그래픽 디자인에서 널리 쓰이는 60-30-10 규칙을 참고하면 좋습니다. 전체 화면의 60%는 주색(배경 등 가장 넓은 면적), 30%는 보조색(카드·섹션 구분), 10%는 강조색(버튼·링크 등 시선을 끌어야 할 요소)에 배분하는 방식입니다. 이 도구가 빈도순으로 뽑아주는 팔레트에서 가장 앞쪽(빈도가 가장 높은) 색상은 이미지에서 가장 넓은 면적을 차지한 색이므로 60% 주색 후보로, 중간 순위는 30% 보조색으로, 가장 튀는 채도 높은 색은 10% 강조색으로 배치하면 자연스러운 배색을 빠르게 잡을 수 있습니다.

What is this?

Analyzes the pixels of your uploaded image to pull out the most common representative colors as HEX and RGB codes — all computed in your browser, no upload needed.

How to use it

Pick or drop an image and analysis starts automatically. Choose the number of colors (5, 6, 8, or 10), and click any swatch to copy its HEX code to your clipboard.

How extraction works

The image is downscaled and drawn onto a canvas, then every pixel's RGB value is read and grouped into similar-color buckets via quantization. The most frequent buckets become the representative colors.

Privacy & safety

Loading, analyzing and previewing all happen entirely in your browser — files are never uploaded or stored on a server.

How extraction works — this tool's quantization method

Before drawing your image to canvas, this tool downscales it to a max of 160px on the longer side — a performance optimization that keeps even large photos fast to analyze. It then walks every pixel of the downscaled image (skipping fully transparent ones) and quantizes each R/G/B channel to 16 levels using only the top 4 bits — mapping the 0-255 range into one of 16×16×16=4096 buckets. Pixels in the same bucket are averaged into that bucket's representative color, and the buckets with the most pixels (highest frequency) become the top N colors in the palette. This is a lightweight bit-truncation quantization rather than a more elaborate median-cut or k-means clustering — fast enough to compute instantly in the browser.

Using extracted colors in design — the 60-30-10 rule

When applying extracted colors to an actual design, the 60-30-10 rule from interior and graphic design is a handy guide: allocate 60% to a dominant color (backgrounds, the largest area), 30% to a secondary color (cards, section dividers), and 10% to an accent color (buttons, links — anything that should catch the eye). Since this tool ranks colors by frequency, the top color is the one covering the most area in your image — a natural pick for the 60% dominant slot — mid-ranked colors work well as the 30% secondary, and the most saturated, eye-catching color makes a good 10% accent.

대표 색상은 어떤 원리로 추출하나요?
선택한 이미지를 작은 크기로 축소해 캔버스(canvas)에 그린 뒤, 모든 픽셀의 색상 값을 읽어 비슷한 색끼리 묶어(양자화) 빈도가 높은 순서로 대표 색상을 뽑아냅니다.
추출 색상 개수는 몇 개까지 가능한가요?
5·6·8·10개 중에서 선택할 수 있으며 기본값은 6개입니다. 개수가 많을수록 이미지의 세부 색조를 더 촘촘하게 반영합니다.
추출한 색상은 어디에 활용하나요?
로고·브랜드 컬러 선정, 웹·앱 디자인 팔레트 구성, 배경·포인트 색상 매칭 등에 활용할 수 있습니다. HEX·RGB 값을 그대로 복사해 CSS나 디자인 툴에 붙여넣을 수 있습니다.
업로드한 사진이 서버로 전송되나요?
아니요. 이미지 로딩과 색상 분석, 미리보기까지 전 과정이 브라우저 안에서만 이루어지며 파일이 서버로 전송되거나 저장되지 않습니다.
팔레트는 정확히 어떤 방식으로 추출되나요?
이미지를 긴 변 기준 최대 160px로 축소해 캔버스에 그린 뒤, 완전 투명 픽셀을 제외한 모든 픽셀의 R·G·B 채널을 상위 4비트만 사용해 16단계(4096개 버킷)로 양자화합니다. 같은 버킷의 평균 RGB를 대표색으로 삼고 빈도가 높은 순서로 상위 N개를 고릅니다.
추출한 색을 디자인에 배분하는 좋은 방법이 있나요?
인테리어·그래픽 디자인에서 쓰이는 60-30-10 규칙을 참고하면 좋습니다. 화면의 60%는 주색(배경), 30%는 보조색(카드·섹션), 10%는 강조색(버튼·링크)에 배분합니다. 빈도가 가장 높은 색을 주색, 중간 순위를 보조색, 채도 높은 색을 강조색으로 쓰면 자연스럽습니다.
이미지가 서버로 전송되지 않는다는 것을 어떻게 확인하나요?
이 도구는 선택한 파일을 URL.createObjectURL()로 브라우저 내부에서만 유효한 임시 로컬 주소로 변환해 미리보기·캔버스 분석에 사용합니다. 코드 전체에 서버로 파일을 전송하는 fetch·XHR 요청이 전혀 없으며, 개발자도구의 네트워크 탭으로 직접 확인할 수 있습니다.
How does color extraction work here?
Your image is downscaled and drawn onto a browser canvas, then every pixel's color is read and grouped into similar-color buckets (quantization). The most frequent buckets become the representative colors.
How many colors can I extract?
You can choose 5, 6, 8, or 10 colors, with 6 as the default. More colors capture finer detail in the image's tones.
What can I use the extracted colors for?
Great for picking logo/brand colors, building web or app design palettes, or matching background and accent colors. Copy the HEX/RGB values straight into CSS or a design tool.
Is my photo uploaded to a server?
No. Loading, analyzing, and previewing all happen in your browser only — nothing is sent or stored on a server.
Exactly how is the palette extracted?
The image is downscaled to a max of 160px on the longer side and drawn to canvas, then every non-transparent pixel's R/G/B channels are quantized to 16 levels using only the top 4 bits (4096 buckets). Each bucket's average RGB becomes its representative color, and the most frequent buckets become the top N colors.
Is there a good way to allocate extracted colors in a design?
The 60-30-10 rule from interior and graphic design works well: 60% dominant color (background), 30% secondary (cards, sections), 10% accent (buttons, links). Using the most frequent color as dominant, mid-ranked ones as secondary, and the most saturated as accent gives a natural result.
How can I confirm my image is never sent to a server?
This tool converts your selected file into a temporary local address with URL.createObjectURL(), valid only inside the browser, for preview and canvas analysis. There is no fetch or XHR call anywhere in the code that transmits the file — you can verify this yourself in your browser's DevTools Network tab.