BlurHash 만들기·풀기
사진 목록·피드에 회색 상자 대신 흐린 미리보기를 깔고 싶은 웹·앱 개발자를 위한 도구예요.
사진 한 장을 30글자 안팎의 코드로
BlurHash는 사진의 대략적인 색 분포를 짧은 글자열로 줄여 두었다가, 사진이 내려받아지기 전에 그 글자열만으로 흐린 그림을 그려 보여 주는 방법이에요. 데이터베이스나 API 응답에 사진 주소와 함께 넣어 두면 목록 화면이 회색 상자 대신 사진과 비슷한 색으로 먼저 채워져요. 이 도구는 사진을 넣으면 코드를 만들고, 코드를 넣으면 그림으로 풀어요.
어떻게 만들어지나요
사진을 긴 변 64px 이하로 줄인 뒤 sRGB 값을 선형 밝기로 바꾸고, 가로 성분 수 × 세로 성분 수만큼의 코사인 무늬(이산 코사인 변환과 비슷해요)와 얼마나 닮았는지 계산해요. 첫 성분은 평균 색이고 나머지는 밝고 어두운 무늬의 세기예요. 이 값들을 정해진 방식으로 양자화해 83가지 글자(Base83)로 적어요. 글자 수는 4 + 2 × 가로 × 세로라서 4×3이면 28글자예요. ‘자동’을 켜면 가로로 긴 사진은 가로 성분을, 세로로 긴 사진은 세로 성분을 더 많이 써요.
코드 풀기
‘코드 → 그림’ 탭에 코드를 붙여 넣으면 원하는 크기로 풀어서 보여 줘요. 대비(punch)를 올리면 무늬가 더 진해져요. 화면에는 보통 32×32 정도로 풀어서 CSS로 늘려 쓰는 게 빠르고, 평균 색 CSS만 써도 가벼운 대체 배경이 돼요. 투명한 PNG는 흰 바탕 위에 놓고 계산해요.
참고
같은 사진이라도 줄이는 방식이 조금씩 달라 다른 라이브러리와 마지막 몇 글자가 다를 수 있지만, 풀었을 때 모습은 거의 같아요. 사진의 세부 모양은 담기지 않으니 미리보기 용도로만 쓰세요.
참고한 자료
자주 묻는 질문
가로·세로 성분 수는 몇이 좋나요?
보통 4×3(28글자)이면 충분해요. 숫자를 늘리면 무늬가 자세해지지만 코드가 길어지고 풀 때 계산도 늘어요.
앱에서 코드를 어떻게 쓰나요?
서버에 사진을 올릴 때 코드를 만들어 함께 저장하고, 화면에서는 BlurHash 디코더 라이브러리로 작은 그림을 그린 뒤 원본 사진이 다 뜨면 바꿔 끼우면 돼요.
파일이 서버로 올라가나요?
아니요. 이 기기 브라우저 안에서만 처리해요.
함께 쓰면 좋은 도구
- Base64 인코딩·디코딩 (글자·파일 ↔ Base64)글자(한글 UTF-8)를 Base64로, Base64를 글자로, 파일·이미지를 data URI로, Base64를 파일로 저장
- 사진 용량 줄이기 (목표 용량 KB 지정)JPG·PNG를 300KB 이하처럼 목표 용량에 맞춰 압축, 여러 장 ZIP
- 색상 팔레트 만들기 (어울리는 색 조합·사진에서 색 뽑기)대표 색 하나로 보색·유사색·삼각 배색·단계색 팔레트, 사진에서 주요 색 뽑기, CSS·PNG로
- PNG 용량 줄이기 (투명 배경 그대로, 색 수 줄이기·무손실 최적화)투명 배경을 지킨 채 PNG를 60~80% 작게: 색 수 줄이기(256색 이하) + 무손실 최적화, 여러 장 ZIP
- 사진 크기 바꾸기 (픽셀·비율 리사이즈)가로·세로 픽셀, 퍼센트, 자주 쓰는 크기로 여러 장 한 번에
- HEIC를 JPG로 변환 (아이폰 사진)아이폰 HEIC 사진을 JPG·PNG로, 여러 장 한 번에 ZIP