안녕하세요 이번 강좌에서는 photoshop 에서 특정 위치 (x, y) 에 해당하는 픽셀의 컬러값을 가져오는 스크립트를 작성해 보겠습니다.
포토샵은 너무나 훌륭한 2D 그래픽 편집 툴임에도 불구하고 막상 스크립트에서는 비트맵 관련 정보를 컨트롤 하는것이 쉽지 않다는 치명적인 약점도 가지고 있습니다.
오늘은 그래서 간단한 방법으로 특정 좌표에 해당하는 픽셀의 색상 값을 구하는 스크립트를 알려드리려 합니다.
Document.colorSamplers
라는 개체를 이용하여 컬러 값을 구하는 방법을 알아보겠습니다.
// 현재 활성화된 다큐먼트를 cDoc 에 저장
var cDoc = app.activeDocument;
//1,1 에 해당하는 컬러값을 가져오기 (실제 좌표는 -1 을 한 좌표를 입력합니다)
var pointSample = cDoc.colorSamplers.add([0,0]);
// colorSamplers로 부터 얻어온 색상 값을 cColor 라는 변수에 저장
var cColor = pointSample.color
// cColor 로부터 RGB를 각각 나누어 배열에 담아줍니다.
var rgb = [cColor.red, cColor.green, cColor.blue];
//생성한 포인트 샘플러는 제거함
pointSample.remove();
// 콘솔 창에 출력
$.writeln("R:" + rgb[0] + " , " + "G:" + rgb[1] + " , " + "B:" + rgb[2])
요렇게 하면 특정 위치에 해당하는 픽셀의 좌표값을 구해오는 것이 가능합니다.
colorSamplers 개체는 별도로 레이어를 구분하여 값을 취득하는 것이 아니기 때문에 현재 어떤 레이어가 선택이 되어있건 상관 없이 값을 가져오는 것이 가능합니다.
만약 1,1 이 아닌 원하는 위치의 좌표를 언제든 입력하여 가져오기 위하여 위의 코드를 함수로 만들면 아래와 같습니다.
function fn_getColorByCoord (xx, yy) // 주어진 좌표에 해당하는 색상값 구하는 함수
{
var cDoc = app.activeDocument;
var pointSample = cDoc.colorSamplers.add([xx-1,yy-1]);
var cColor = pointSample.color
var rgb = [cColor.red, cColor.green, cColor.blue];
pointSample.remove();
// 결과값으로 구해진 색상값을 리턴
return rgb
}
// 실제 함수를 사용할 때는 아래와 같이 사용
// x: 323, y: 225 위치의 색상값을 구하고 싶을 때
fn_getColorByCoord (323,225)
요렇게 함수를 정의하여 원하는 위치의 색상 값을 언제든지 구해오는 것이 가능합니다.
컬러샘플러를 이용하여 이런 것도 가능합니다.
https://diy-dev-design.tistory.com/57
https://diy-dev-design.tistory.com/55
2020/04/02 - [DEV/Adobe Script] - [포토샵스크립트] color fill 하기
2020/02/14 - [DEV/Adobe Script] - [포토샵스크립트] 매직완드 기능 스크립트로 실행하기
'DEV > Adobe Script' 카테고리의 다른 글
[포토샵스크립트] 현재 레이어 이미지를 중앙으로 이동시키기 (2) | 2019.09.19 |
---|---|
[photoshop script] 포토샵 스크립트로 특정 영역 선택하기 (1) | 2019.09.03 |
[포토샵스크립트] 모든 레이어 자동저장 / 폴더 구조 포함 (5) | 2019.06.27 |
포토샵 스크립트 레퍼런스, 도움말 사용하기 (4) | 2019.06.12 |
포토샵 스크립트를 이용하여 이미지 정보 확인하기 (1) | 2019.06.11 |