← Photoshot · 사용법과 개발기↗편집기 열기
Photoshot / Field notesNo. 08

흑백으로 바꾼 뒤에도 피부 밝기를 조절하려면

포토샷에 색상별 밝기를 조절하는 흑백 레이어를 구성했습니다.

개발 기록 재구성 · 공개 코드 v0.16.0 기준 / 2026.10.13

구현 과정 읽기 ↓
흑백 편 전용 AI 인물 사진
PORTRAIT STUDY / 09AI-generated image

Development journal / 09

만드는 과정에서 결정한 것들

기존 개발 기록과 공개 코드를 바탕으로 구현 과정을 정리했습니다. 아래 인물 사진은 2026.10.13에 새로 제작한 동작 예시입니다.

01

이번에 작업한 부분

포토샷에 색상별 밝기를 조절하는 흑백 레이어를 구성했습니다.

02

어떻게 구성했나

원래 색상각을 읽고 빨강·노랑·초록·청록·파랑·자홍 중 양옆 두 설정을 섞어 회색 밝기를 구합니다.

03

풀어야 했던 문제

채도를 없애는 것만으로는 피부와 배경의 회색 밝기를 따로 조절할 수 없습니다. 색 구간을 딱 잘라 나누면 이웃한 색의 밝기가 끊길 수 있습니다.

04

무엇을 참고하고 어떻게 적용했나

여섯 색 사이를 보간하고 원래 무채색인 픽셀은 그대로 유지했습니다. 흑백 계산 뒤에 색조를 입히는 옵션은 별도로 두었습니다.

이 기능의 외부 GitHub 코드 도입 기록은 확인되지 않았습니다. 아래 링크는 직접 작성한 흑백 계산과 조작 화면입니다.

포토샷에서 작성한 구현

05

현재 결과와 확인 범위

이번 사진은 빨강 55·노랑 60·파랑 5 등을 적용하고 색조 없이 내보냈습니다. 피부 전용 선택이 아니어서 같은 색의 옷에도 영향을 줍니다.

Actual screen / 실제 동작 확인흑백
편집 전 원본실제 Photoshot에서 내보낸 편집 결과AFTERBEFORE

흑백 사진도 원래 색이 중요합니다

포토샷 흑백 패널에서 색상별 값을 조절하고 새 화면을 촬영했습니다. 단순히 채도를 0으로 낮추는 처리와 다른 지점을 정리했습니다.

THIS SESSIONRed 55 / Yellow 60 / Green 40 / Cyan 60 / Blue 5 / Magenta 80

사진 위를 좌우로 움직여 비교하세요. 키보드로는 비교 막대에 초점을 맞춘 뒤 방향키를 사용하면 됩니다.
인물 사진은 새로 생성한 AI 이미지입니다. 편집 결과는 실제 Photoshot에서 적용하고 내보냈습니다. 아래 값은 이 사진의 실습값이며 모든 사진에 맞는 권장값은 아닙니다.

Photoshot에서 직접 해보기 ↗

STEP 01 / 도구 찾기

Black & White 열기

사진을 연 뒤 상단 Add Adjustment에서 Black & White를 선택합니다. 아래는 실제 편집기에서 해당 도구의 위치를 확인한 화면입니다.

01 · Add Adjustment에서 Black & White의 위치 확인
01 · Add Adjustment에서 Black & White의 위치 확인

STEP 02 / 직접 조절

사진을 보며 값을 조절합니다

Red 55, Yellow 60, Green 40, Cyan 60, Blue 5, Magenta 80으로 변환합니다. Tint는 끈 상태입니다.

02 · 실제 Black & White 패널과 적용값 / Red 55 / Yellow 60 / Green 40 / Cyan 60 / Blue 5 / Magenta 80
02 · 실제 Black & White 패널과 적용값 / Red 55 / Yellow 60 / Green 40 / Cyan 60 / Blue 5 / Magenta 80

STEP 03 / 레이어 표시를 껐다 켜거나 Hold to Compare로 원본을 비교한 뒤 File → Export As… → Download로 결과를 저장합니다. 위 전후 비교의 AFTER는 이 편집기에서 직접 내보낸 이미지입니다. 화면을 누르면 원본 크기로 확대됩니다.

계산식·소스 설명 자세히 보기

02 / Behind the tool

화면 뒤의 구현 이야기

아래는 기존 작업기의 공개 코드 v0.16.0 기준 설명과 계산 예제입니다. 2026.10.01 기록의 수치·검증 설명을 보존했습니다. 위의 2026.10.13 새 사진 실습과 설정값은 다를 수 있으며, 현재 편집기의 모든 기능을 이 버전의 코드와 동일하다고 설명하는 것은 아닙니다.

01

빨강과 노랑을 올려 얼굴 밝기 조절하기

예제는 빨강 75, 노랑 90입니다. 나머지는 기본값인 초록 40·청록 60·파랑 20·자홍 80을 유지했습니다. 피부에서 흔히 나타나는 빨강과 노랑 계열의 흑백 밝기를 올린 설정입니다.

패널의 색 이름은 최종 사진에 남길 색이 아닙니다. 원본에서 그 색에 가까운 부분을 얼마나 밝은 회색으로 바꿀지 정하는 값입니다. 피부 전용 조절은 아니므로 같은 색의 사물도 영향을 받습니다.

위의 보정 후 사진에는 마지막 단계의 색조 입히기까지 포함되어 있습니다. 옆의 화면은 색조를 넣기 전, 빨강과 노랑의 밝기를 조절하는 부분입니다.

슬라이더는 −100~300 범위입니다. 값이 크다고 항상 디테일이 더 잘 보이는 것은 아닙니다. 계산 결과가 흰색이나 검정으로 제한되면 그 부분의 차이는 줄어듭니다.

02

원래 색상각으로 두 슬라이더를 고르기

픽셀의 RGB를 HSL로 바꿔 색상각을 읽습니다. 색상 원을 빨강·노랑·초록·청록·파랑·자홍의 여섯 구간으로 나누고, 양옆 두 슬라이더의 값을 섞습니다.

const pos = h * 6;
const i = Math.floor(pos) % 6;
const f = pos - Math.floor(pos);
const weight = (
  v['color' + i] * (1 - f)
  + v['color' + ((i + 1) % 6)] * f
) / 100;

예를 들어 색상각 30°는 빨강 0°와 노랑 60°의 중간입니다. 빨강 75와 노랑 90을 절반씩 섞으면 가중치는 0.825가 됩니다. 인접한 색이 서로 전혀 다른 밝기로 끊기지 않게 연결하는 방식입니다.

순색 여섯 개의 기본 흑백 결과와 빨강 노랑 변경 후 결과
각 칸의 숫자는 출력 회색값입니다. 입력은 최대 채도의 순색이며, 표의 변경 설정은 빨강 75·노랑 90입니다.
03

채널 최솟값에 색의 차이를 더합니다

회색 밝기는 RGB의 최솟값과 최댓값, 앞서 구한 가중치로 계산합니다. 채널값은 0~1로 정규화되어 있습니다. 계산한 회색을 R·G·B 세 채널에 똑같이 넣으면 흑백이 됩니다.

const lo = Math.min(r, g, b);
const hi = Math.max(r, g, b);
const gray = clamp(lo + (hi - lo) * weight);
out.fill(gray);

원래부터 회색인 픽셀은 세 채널값이 같습니다. 따라서 hi − lo가 0이 되어 색상별 슬라이더를 움직여도 그대로 남습니다. 반대로 순수한 빨강은 가중치의 영향이 크게 나타납니다.

이 식은 RGB에 고정 가중치를 곱해 더하는 일반적인 휘도 계산과 다릅니다. 여섯 색의 밝기를 개별적으로 조절하는 기능에 맞춰 구현한 변환입니다.

04

흑백이 완성된 뒤 따뜻한 색조 넣기

색조 입히기를 켜면 앞 단계의 회색값을 HSL의 명도 L로 사용합니다. 여기에 지정한 색상각과 채도를 넣어 RGB로 돌아옵니다. 예제 설정은 색상각 35°, 채도 20%입니다.

if (v.tint) {
  fromHsl(
    v.tintHue / 360,
    v.tintSaturation / 100,
    gray, out
  );
}

세 채널에 같은 회색을 넣은 뒤, 원하는 색조로 변환하는 순서입니다. 이때 유지되는 기준은 HSL의 L입니다. 지각적 밝기나 물리적인 휘도가 정확히 일정하다는 뜻은 아닙니다.

Adobe의 흑백 문서에서도 색상별 회색 조절과 Tint를 별도 항목으로 설명합니다. 포토샷에서도 두 설정을 분리해, 흑백 톤을 먼저 다듬고 색조를 나중에 바꿀 수 있게 했습니다.

  1. 흑백 밝기 계산원래 색상에 따라 회색값을 구합니다.
  2. HSL 조합색상각 35°와 채도 20%, 앞 단계의 명도를 함께 넣습니다.
  3. RGB로 변환따뜻한 색조의 최종 픽셀을 만듭니다.
05

자동 흑백과 사진에서 직접 고르는 버튼

자동 흑백은 사진의 R·G·B 평균값으로 슬라이더의 시작값을 제안합니다. 각 채널의 평균과 전체 평균의 차이를 구하고, 여기에 0.3을 곱해 기본 슬라이더값에 더합니다. 사진의 의미를 판단하는 AI 기능은 아닙니다.

‘사진의 색을 밝게 +10’과 ‘어둡게 −10’은 클릭한 색에 가장 가까운 기본 색상 하나를 고릅니다. 해당 슬라이더를 10만큼 바꾸는 방식입니다. 회색처럼 채널 간 차이가 작은 픽셀은 색 선택 대상에서 제외합니다.

흑백 변환에서 두 색 사이를 보간하는 계산과, 버튼으로 가장 가까운 색 하나를 고르는 동작은 서로 다릅니다. 구현 목적에 따라 이렇게 나누었습니다.

자동과 사진 선택의 구현은 advanced-adjustment.tsx, tone-tools.ts에서 확인할 수 있습니다.
기능입력 → 동작
자동 흑백채널별 평균 → 여섯 시작값 제안
사진의 색 밝게클릭 색 → 가까운 슬라이더 +10
사진의 색 어둡게클릭 색 → 가까운 슬라이더 −10
초기화슬라이더와 색조 설정을 기본값으로 복원

구현 코드와 참고 자료

공개 코드는 구현을 설명하기 위한 참조입니다. 사용·배포 조건은 저장소의 라이선스 표기를 확인하세요. 사진·패널은 자체 제작 자료, 장식 이미지는 AI 생성 이미지입니다.

모든 사용법·개발기 보기 ↗↗직접 편집해 보기