프로그래밍 방식으로 Photoshop에서는 HUE 블렌드가 어떻게 작동합니까?
-
10-12-2019 - |
문제
Photoshop의 블렌딩 모드를 "색조"로 설정할 수 있습니다. 해당 레이어가 예를 들어 청색으로 채워지면 아래의 레이어를 가져 와서 비닐 컬러가 아닌 곳이있는 곳이면 모두 파란색으로 만듭니다.
나는 그것이 실제로 무엇을하고 있는지 궁금합니다. 픽셀 AARRGGBB가있는 백그라운드 레이어가 있고 맨 위에있는 레이어가 "HUE"를 블렌드 모드로 설정하고 해당 레이어에 픽셀 AARRGGBB가 있으며,이 두 값은 우리가 볼 수있는 결과를 제공하기 위해 어떻게 결합되어 있는가?
rrggbb를 아래 레이어에서 떨어 뜨리지 않습니다. 그것이 흰색과 검은 색으로 컬러 일 뿐이라면. 또한 색상 변화를 허용하지 않습니다.
백그라운드 픽셀이 0xFF00FF00이고 해당 색상 레이어 픽셀이 0xFF0000FF 인 경우 FF 파란색이 FF 녹색을 대체하기 때문에 최종 결과가 0xFF0000FF 일 것임을 가정합니다. 그러나 배경 픽셀이 0x55112233이고 색상 레이어 픽셀이 0xFF0000FF 인 경우 파란색의 그늘이 어떻게 나타나는가?
내가 묻는 이유는 다양한 이미지를 가져 와서 프로그램의 색조를 내 앱에서 프로그래밍 방식으로 변경하고 싶습니다. 동일한 이미지의 8 개의 다른 버전을 다른 색상으로 저장하는 대신 하나의 이미지를 저장하고 필요에 따라 색을 색칠하고 싶습니다.
해결책
RGB를 HSV로 변환하는 알고리즘을 찾았습니다. http://www.cs.rit.edu/~ncs/color/t_convert..html
해당 페이지의 맨 아래에는 Java Color 객체가 RGB와 HSV 사이를 변환하는 방법이 이미 있으므로 방금 사용했습니다.
다른 팁
JavaScript / Canvas에서 혼합 모드를 복제하는 방법을 연구 해왔으나 "Colorize"필터 / 블렌드 모드 만 제공했습니다. (아래의 예)
colorize 알고리즘 :
- RGB에서 HSL로 색상을 변환합니다.
- 가치를 원하는 것으로 변경하십시오 (내 경우 172˚ 또는 0.477);
- 업데이트 HSL을 RGB 로 되돌립니다.
참고 : 이것은 바탕 화면에서 괜찮지 만 스마트 폰에서 눈에 띄게 느리게 느립니다.
이 세 가지 이미지를 비교하여 차이를 볼 수 있습니다. 원본 :
colorize :
불꽃 놀이 "블렌드 색조"알고리즘 (Photoshop '과 동일하다고 생각합니다) :
colorize 필터는 좋은 대체물 일 수 있습니다.