이번 강좌에서는 포토샵 스크립트를 이용하여 color fill 기능을 사용하는 방법을 알려 드리겠습니다.
포토샵에서 아주 많이 사용하는 기능이지만 일반적인 스크립트에서 구현이 되지 않아 답답하셨죠? 제가 올려드리는 함수를 스크립트 내에 포함 시키신 후 함수를 호출하여 사용하시면 간단하게 fillColor 기능을 사용하실 수 있습니다.
저는 Red, Green, Blue 를 각각 입력하여 Fill 할 수 있도록 개발을 하였습니다. foreground color 및 background 컬러를 이용하여 fill 할 수도 있지만 rgb 를 직접 입력하여 색상을 칠해 주는 것이 과정이 좀더 짧기 때문에 그렇게 사용합니다.
또 레이어에 알파 영역을 보호하고 실제 컬러 영역에만 Fill 할 수 있는 기능이 적용 되도록 하였습니다. 보통은 레이어 창에서 해당 기능을 활성화 하는데요. 제가 올려 드리는 스크립트를 통하여 간단히 해당 기능의 설정이 가능합니다.
function fill_color (r, g, b, prvT){
var idFl = charIDToTypeID( "Fl " );
var desc77 = new ActionDescriptor();
var idUsng = charIDToTypeID( "Usng" );
var idFlCn = charIDToTypeID( "FlCn" );
var idClr = charIDToTypeID( "Clr " );
desc77.putEnumerated( idUsng, idFlCn, idClr );
var idClr = charIDToTypeID( "Clr " );
var desc78 = new ActionDescriptor();
var idRd = charIDToTypeID( "Rd " );
desc78.putDouble( idRd, r );
var idGrn = charIDToTypeID( "Grn " );
desc78.putDouble( idGrn, g);
var idBl = charIDToTypeID( "Bl " );
desc78.putDouble( idBl, b );
var idRGBC = charIDToTypeID( "RGBC" );
desc77.putObject( idClr, idRGBC, desc78 );
var idOpct = charIDToTypeID( "Opct" );
var idPrc = charIDToTypeID( "#Prc" );
desc77.putUnitDouble( idOpct, idPrc, 100.000000 );
var idMd = charIDToTypeID( "Md " );
var idBlnM = charIDToTypeID( "BlnM" );
var idNrml = charIDToTypeID( "Nrml" );
desc77.putEnumerated( idMd, idBlnM, idNrml );
var idPrsT = charIDToTypeID( "PrsT" );
desc77.putBoolean( idPrsT, prvT );
executeAction( idFl, desc77, DialogModes.NO );
}
위의 코드를 가져가셔서 본인의 스크립트 내에 붙여 넣으신 뒤 바로 사용하시면 되는데요. RGB 각각의 색상과 투명영역을 보존하고 Fill 을 할 것인지 그냥 전체에 Fill 할 것인지를 선택할 수 있는 옵션으로 true, false 를 인자로 넣으시면 됩니다.
예를 들면 특정 레이어의 영역 내 color fill 을 하시려면 아래와 같이 하시는거죠.
var cDoc = app.actineDocument
cDoc.activeLayer = cDoc.layers[0]
fill_color(255,0,0,true) < -- 요 부분이 실제로 함수를 실행 시키는 부분입니다.
function fill_color (r, g, b, prvT){
var idFl = charIDToTypeID( "Fl " );
var desc77 = new ActionDescriptor();
var idUsng = charIDToTypeID( "Usng" );
var idFlCn = charIDToTypeID( "FlCn" );
var idClr = charIDToTypeID( "Clr " );
desc77.putEnumerated( idUsng, idFlCn, idClr );
var idClr = charIDToTypeID( "Clr " );
var desc78 = new ActionDescriptor();
var idRd = charIDToTypeID( "Rd " );
desc78.putDouble( idRd, r );
var idGrn = charIDToTypeID( "Grn " );
desc78.putDouble( idGrn, g);
var idBl = charIDToTypeID( "Bl " );
desc78.putDouble( idBl, b );
var idRGBC = charIDToTypeID( "RGBC" );
desc77.putObject( idClr, idRGBC, desc78 );
var idOpct = charIDToTypeID( "Opct" );
var idPrc = charIDToTypeID( "#Prc" );
desc77.putUnitDouble( idOpct, idPrc, 100.000000 );
var idMd = charIDToTypeID( "Md " );
var idBlnM = charIDToTypeID( "BlnM" );
var idNrml = charIDToTypeID( "Nrml" );
desc77.putEnumerated( idMd, idBlnM, idNrml );
var idPrsT = charIDToTypeID( "PrsT" );
desc77.putBoolean( idPrsT, prvT );
executeAction( idFl, desc77, DialogModes.NO );
}
요렇게 하시면 첫번째 레이어의 영역내에 255, 0 , 0 즉 red 가 채워지게 됩니다.
네번째 옵션에 true 를 주었으므로 투명 영역 안에는 당연히 칠해지지 않습니다. 딱 개체가 있는 영역만 색상이 칠해지죠.
자 color fill 어렵지 않으시죠? 사실 fill 하는 액션에서 opacity (투명도) 나 multiply, lighten 같은 컬러 합성 기능도 조금만 손보면 사용이 가능하지만 오늘은 그냥 색상을 칠하는 부분만 소개를 드립니다.
이상으로 오늘 포스팅을 마칩니다.
포토샵 스크립트 공부에 도움이 될만한 관련된 콘텐츠 링크 올립니다.
2020/02/14 - [DEV/Adobe Script] - [포토샵스크립트] 매직완드 기능 스크립트로 실행하기
2019/11/14 - [DEV/Adobe Script] - [포토샵스크립트] 스크립트로 레이어 생성, 이동, 복사 하기
2019/09/19 - [DEV/Adobe Script] - [포토샵스크립트] 현재 레이어 이미지를 중앙으로 이동시키기
2019/06/10 - [DEV/Adobe Script] - [포토샵 스크립트] 강좌, 무작정 따라해보기
2020/01/23 - [DEV/Adobe Script] - [포토샵스크립트] 레이어 컨텐츠 영역 선택하기
뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 작성자를 위한 응원 부탁드립니다. ㅋㅋ |
'DEV > Adobe Script' 카테고리의 다른 글
photoshop temp 파일 삭제하기 (0) | 2020.12.09 |
---|---|
[illustrator script] 일러스트도 스크립트가 되나요? (7) | 2020.12.03 |
[포토샵스크립트] 파일을 이미지로 저장하기 save option 설정 (6) | 2020.02.19 |
[포토샵스크립트] 매직완드 기능 스크립트로 실행하기 (0) | 2020.02.14 |
[포토샵스크립트] 레이어 컨텐츠 영역 선택하기 (0) | 2020.01.23 |