반응형

이번 포스트에서는 포토샵 스크립트를 이용하여 이미지의 다양한 정보를 확인하는 방법을 소개할까 합니다. 이미지 정보 확인과 동시에 몇가지 쓰임세 있는 기능도 소개할 예정입니다. 

 

이미지의 정보를 확인하는 것은 다양한 의미에서 중요한 작업입니다. 액션과 다르게 스크립트는 판단이라는 로직을 적용할 수 있기 때문에 기준이 되는 정보는 매우 중요한 것이 됩니다.

 

오늘 확인할 정보/기능은 아래와 같습니다.

 

  • 포토샵으로 이미지 열기
  • 이미지의 가로 사이즈 확인하기
  • 이미지의 세로 사이즈 확인하기
  • 이미지의 크기를 판단하여 리사이즈 하기
  • PSD 파일인 경우 레이어의 개수 확인하기
  • 각 레이어의 이름 출력하기

입니다.

 

먼저 앞서 진행했던 강좌의 내용을 이해하고 있는 것으로 보고 바로 진행하겠습니다.

스크립트 툴킷과 포토샵을 실행한뒤 에디터 창에 아래와 같이 입력합니다.

 

 

var imgPath = "D:\\images\\audi-a6-allroad-07.jpg"
var imgFile = File(imgPath)
app.open(imgFile)

 

첫번째 줄에서는 이미지의 경로를 적어줍니다. 본인의 이미지파일의 경로를 이용하여 테스트 하시면 됩니다. 중간에 \ 가 두개씩 있는 것을 주의 하세요. 경로와 경로를 구분하는 문자를 두개씩 적어 주어야 오류가 생기지 않습니다.

 

두번째 줄에서는 첫번째 줄의 경로를 이용하여 해당 경로가 파일임을 선언해 줍니다.

 

그리고 세번째 줄에서는 포토샵에서 실제 해당 파일을 여는 동작을 하게 됩니다.

 

실행해 보면 아래와 같이 이미지가 열립니다. (제가 좋아하는 아우디 네요)

포토샵에서 원본 이미지를 열어서 본 화면

 

 

이제 이미지의 크기 정보를 확인해 보겠습니다.

열려있던 이미지를 닫아 주시고 아래와 같이 작성한 뒤 다시 실행해봅니다.

var imgPath = "D:\\images\\audi-a6-allroad-07.jpg"
var imgFile = File(imgPath)

var cDoc = app.open(imgFile)

var imgWidth = cDoc.width
var imgHeight = cDoc.height

alert("image Width:" + imgWidth + " ,image Height:" + imgHeight)

 

아까보다 줄이 조금 늘었는데요.

 

이미지를 열면서 동시에 cDoc 라는 변수에 현재 열린 이미지를 저장합니다.

그리고 imgHeight, imgWidth 라는 변수를 만들어 cDoc.width 라는 속성을 이용하여 값을 설정 합니다.

 

앞선 강의에서 진행한 것처럼 alert 라는 경로창을 이용하여 알아낸 정보를 출력해보는 코드입니다.

 

출력해보면 아래와 같은 팝업이 뜨게 됩니다.

 

경로창 형식으로 정보를 표시해 줍니다.

 

이미지의 가로 크기가 1600 px, 이미지의 세로 크기가 1066 px 라는 것을 알수 있습니다.

 

 

저 이미지를 티스토리에 붙여 넣기 위하여 적당한 사이즈로 리사이즈를 해 볼 건데요.

이미지가 1500px 이 넘으면 1500px 로 리사이즈 하는 코드를 추가해 보겠습니다.

var imgPath = "D:\\images\\audi-a6-allroad-07.jpg"
var imgFile = File(imgPath)

var cDoc = app.open(imgFile)

var imgWidth = cDoc.width
var imgHeight = cDoc.height

alert("image Width:" + imgWidth + " ,image Height:" + imgHeight)

if (imgWidth > 1500)
{
	cDoc.resizeImage(1500)
}

 

 

아래 세줄이 늘었죠?

 

if 문으 이용하여 크기를 판단하도록 해봤습니다.

원본 크기가 1600px 였으므로 약간 작아졌을 것입니다.

 

그럼 요렇게 가로 1500px 인 이미지가 만들어 지게 됩니다.

가로 1500 px 로 리사이즈가 된 이미지

 

 

 

이번에는 PSD 파일을 열어보도록 하겠습니다.

 

위에 작성한 코드와 동일한데요. 파일의 경로와 이름만 바뀌었습니다.

var imgPath = "D:\\01_works\\test\\layerTest.psd"
var imgFile = File(imgPath)

var cDoc = app.open(imgFile)

var imgWidth = cDoc.width
var imgHeight = cDoc.height

alert("image Width:" + imgWidth + " ,image Height:" + imgHeight)

 

요런 이미지 입니다.

3개의 레이어가 생성되어 각 레이어에 텍스트가 기록되어 있는 PSD 파일

 

 

이제 현재 PSD 파일이 가지고 있는 레이어의 갯수를 알아보고 첫번째 레이어의 이름을 출력해 보겠습니다.

var imgPath = "D:\\01_works\\test\\layerTest.psd"
var imgFile = File(imgPath)

var cDoc = app.open(imgFile)

var imgWidth = cDoc.width
var imgHeight = cDoc.height

alert("image Width:" + imgWidth + " ,image Height:" + imgHeight)

var layerCount = cDoc.layers.length
var firstLayer = cDoc.layers[0]

$.writeln(layerCount)
$.writeln(firstLayer.name)

alert 아래 부분에 코드가 좀 추가되었죠?

 

var 라는 단어로 그뒤에 오는 변수를 선언한다는 것은 이미 아셨을 것이고 그뒤가 중요합니다.

cDoc 는 현재 도큐먼트를 말하는데요. 뒤에 .layer.length 라는 코드가 들어갔습니다. cDoc.layers 는 cDoc 에 들어있는 모든 레이어를 말합니다. cDoc 에 들어있는 모든 레이어 뒤에 .length 가 있으므로 cDoc 에 있는 모든 layer 의 갯수를 구하는 코드가 됩니다.

 

그 아래로는 firstLayer 라는 변수를 만들어 준뒤 전체 레이어 중 0 번째 레이어를 설정해 줍니다. 참고로 자바스크립트에서는 배열의 첫번째 값이 0 번째 입니다.  

그 아래 줄에서 보면 첫번째 레이어의 이름을 $.writeln 을 통해 출력하도록 하고 있죠.

 

$.writeln 을 통해 출력된 값은 아래와 같습니다.

 

javascript console 창에 출력된 정보가 표시됨

 

처음 보여지는 4는 전체 레이어의 갯수 입니다.

두번째 줄의 Layer1 은 첫번째 레이어의 이름이죠. 위에 포토샵 화면을 보시면 이해가 되실거에요.

 

오늘 진행하기로 했던 강좌의 내용에 보면 전체 레이어의 이름을 출력하는 부분이 있었습니다.

 

일반적인 코딩 시 반복적으로 무엇인가를 할때 사용하는 명령어는 for 입니다.

여기서도 역시 for 를 이용하여 전체 레이어의 이름을 확인해 보겠습니다.

 

아래 코드를 보시죠.

var imgPath = "D:\\01_works\\test\\layerTest.psd"
var imgFile = File(imgPath)

var cDoc = app.open(imgFile)

var imgWidth = cDoc.width
var imgHeight = cDoc.height

alert("image Width:" + imgWidth + " ,image Height:" + imgHeight)

var layerCount = cDoc.layers.length
var firstLayer = cDoc.layers[0]

$.writeln(layerCount)

for ( i=0; i < layerCount; i++)
{
    $.writeln(cDoc.layers[i].name)
}

 

아래 쪽에 for 라는 문장과 함께 세줄이 추가 되었습니다.

 

for 안쪽에 ( ) 로 표시된 부분이 반복이 이루어 지는 조건 입니다. i 라는 변수를 설정하고 시작 값은 0 으로 하겠다는 의미이며 i 라는 값이 아까 구했던 레이어의 갯수보다 작은동안 반복이 되는 것이죠. 그위에 보면 i++ 라는 부분이 있는데요. 매 턴 마다 i 라는 값에 1을 더하겠다는 뜻이 됩니다.

그 아래 { } 로 묶인 부분이 실제 매턴 마다 이루어지는 코드 입니다. i 라는 값은 0 ~ layerCount 사이에서 1 씩 증가하면서 계속 커질겁니다.

 

다시 말하면 도큐먼트가 가지고 있는 전체 레이어를 대상으로 0 번째 레이어 부터 마지막 레이어까지 이름을 출력하는 기능을 수행합니다.

 

출력된 결과는 아래와 같습니다.

 

javascript console 창에 정보가 출력됨

 

첫줄에 4는 전체 레이어 갯수고요. 그 아래 4줄의 내용은 각 레이어의 이름입니다. 

맨마지막에 Result:undefined 는 전체 스크립트 실행 뒤에 별다른 결과가 없다는 의미 입니다. 신경 안쓰셔도 됩니다.

 

이렇게 해서 포토샵의 레이어를 탐색하는 방법도 가르쳐 드렸습니다.

레이어가 100 개든 1000 개든 이런식으로 코딩을 하면 시간과의 싸움에서 이기게 됩니다.

나중에 레이어의 정보를 이용하여 컨트롤 하는 것도 올리도록 하겠습니다.

 

궁금하신 부분은 언제든지 뎃글로 문의 주세요~

 

 

강좌가 괜찮으셨다면 공감 부탁드립니다.~

 

특정 레이어의 컨텐츠 영역을 스크립트를 이용하여 선택하고 싶다면

2020/01/23 - [DEV/Adobe Script] - [포토샵스크립트] 레이어 컨텐츠 영역 선택하기

 

[포토샵스크립트] 레이어 컨텐츠 영역 선택하기

오늘 소개해 드릴 스크립트는 간단한 내용이지만 일반 적인 스크립트상으로 개발이 불가능하기에 경우에 따라는 아주 유용한 스크립트가 되겠습니다. 우리는 작업 중 상당한 빈도로 포토샵 레이어의 컨텐츠 영역만..

diy-dev-design.tistory.com

 

스크립트 작성 중 도움말이 필요하셨다면?

https://diy-dev-design.tistory.com/10

 

포토샵 스크립트 레퍼런스, 도움말 사용하기

포토샵 스크립트 역시 다른 개발언어와 마찬가지로 도움말이 있습니다. 레퍼런스라고 해야할까요. 사실 개발자라고 해도 모든 명령어와 프라퍼티, 메소드를 외우고 있을 수는 없기 때문에 잘 만들어진 레퍼런스가..

diy-dev-design.tistory.com

 

포토샵으로 셀렉션 영역 설정하기

https://diy-dev-design.tistory.com/37

 

[photoshop script] 포토샵 스크립트로 특정 영역 선택하기

이번 강좌에서는 스크립트를 이용하여 selection 을 만들어 보고 만들어진 selection 영역에 색상을 fill 하는 스크립트를 작성하여 보도록 하겠습니다. 단순한 기능이지만 알아두면 유용하게 사용될 수 있답니다...

diy-dev-design.tistory.com

 

반응형

+ Recent posts