반응형

이번 포스트에서는 현재 열려있는 도큐먼트를 특정 이미지 포멧으로 저장하는 기능에 대하여 알아 보겠습니다.

포토샵은 이미지를 편집하는 다재 다능한 툴이지만 자동화 툴로 사용할 생각까지는 하지 않습니다. 일반 적인 이미지 포멧을 변환해주는 툴들은 여럿 있지만 PSD 이미지를 이용해서 특정 조건을 설정하여 이미지를 저장하려면 포토샵 밖에는 방법이 없습니다.

예를 들면 100 개의 PSD 파일을 열어서 각각 가장 최상위에 있는 또는 특정 레이어만 이미지로 저장해야 한다면 일반적인 툴로는 불가능하죠. 하지만 포토샵 스크립트를 이용하면 손쉽게 처리가 가능합니다.

오늘은 그러한 사전 조건이 완료되었다는 전제 하에 이미지로 파일을 저장하는 방법을 알아보겠습니다.

 

  • 먼저 저장할 포멧을 설정
  • 해당 포멧에 대한 상세 옵션 설정
  • 저장할 파일 지정
  • 파일로 저장
  • 저장한 뒤 파일 닫기 (옵션)

요정도의 과정이 되겠습니다.

어렵지 않지만 처음 해보시는 분은 난감한 코드죠.

제가 샘플을 올려 드릴테니 가져다가 조금씩 바꿔가면서 사용하시면 됩니다.

 

PNG 파일 저장 옵션

var pngSaveOptions = new PNGSaveOptions();
pngSaveOptions.embedColorProfile = true; // 컬러 프로필 저장 옵션
pngSaveOptions.matte = MatteType.NONE;
pngSaveOptions.quality = 100;
pngSaveOptions.transparency = true;
pngSaveOptions.interlaced = true;

// 저장할 때는 
var cFile = new File("저장될 경로 및 파일명.png")
app.activeDocument.saveAs(cFile, pngSaveOptions, true, Extension.LOWERCASE)

 

JPEG 저장 옵션

var JPGOpt = new JPEGSaveOptions();
JPGOpt.embedColorProfile = True
JPGOpt.quality = 5  // 0~12 , 12 is best quality
JPGOpt.formatOptions = FormatOptions.STANDARDBASELINE;
JPGOpt.matte = MatteType.WHITE

/* mattetype
MatteType.BACKGROUND
MatteType.BLACK
MatteType.FOREGROUND
MatteType.NETSCAPE
MatteType.NONE
MatteType.SEMIGRAY
MatteType.WHITE
*/ 

// 저장할 때는 
var cFile = new File("저장될 경로 및 파일명.jpg")
app.activeDocument.saveAs(cFile, JPGOpt, true, Extension.LOWERCASE)

 

GIF 저장 옵션

var GIFOpt = new GIFSaveOptions();
GIFOpt.palette = Palette.LOCALSELECTIVE
GIFOpt.ForcedColors = ForcedColors.BLACKWHITE
GIFOpt.matte = MatteType.NONE
//GIFOpt.Dither = Dither.DIFFUSION
//GIFOpt.ditherAmount = 75
GIFOpt.interlaced = true
GIFOpt.colors = 256

// 저장할 때는 
var cFile = new File("저장될 경로 및 파일명.gif")
app.activeDocument.saveAs(cFile, GIFOpt, true, Extension.LOWERCASE)

 

Targa(TGA) 저장 옵션

var TGAOpt = new TargaSaveOptions
TGAOpt.alphaChannels = true
TGAOpt.rleCompression = false // 압축여부
TGAOpt.resolution = TargaBitsPerPixels.THIRTYTWO

/* Targa Bits Per Pixels
TargaBitsPerPixels.SIXTEEN
TargaBitsPerPixels.THIRTYTWO
TargaBitsPerPixels.TWENTYFOUR
*/
var cFile = new File("저장될 경로 및 파일명.tga")
app.activeDocument.saveAs(cFile, TGAOpt, true, Extension.LOWERCASE)

 

BMP 저장 옵션

BMPOpt = new BMPSaveOptions();
BMPOpt.alphaChannels = true;
BMPOpt.depth = BMPDepthType.BMP_R5G6B5;

/* BMP Depth Type
BMPDepthType.BMP_A1R5G5B5
BMPDepthType.BMP_A4R4G4B4
BMPDepthType.BMP_A8R8G8B8
BMPDepthType.BMP_R5G6B5
BMPDepthType.BMP_R8G8B8
BMPDepthType.BMP_X1R5G5B5
BMPDepthType.BMP_X4R4G4B4
BMPDepthType.BMP_X8R8G8B8
BMPDepthType.EIGHT
BMPDepthType.FOUR
BMPDepthType.ONE
BMPDepthType.SIXTEEN
BMPDepthType.THIRTYTWO
BMPDepthType.TWENTYFOUR
*/

// 저장할 때는 
var cFile = new File("저장될 경로 및 파일명.bmp")
app.activeDocument.saveAs(cFile, BMPOpt, true, Extension.LOWERCASE)

 

Save Foe Web 저장 옵션 (PNG)

var exptOpt = new ExportOptionsSaveForWeb 
exptOpt.format = SaveDocumentType.PNG
// saveforweb 인 경우 COMPUSERVEGIF, JPEG, PNG-8, PNG-24, and BMP 로만 가능함
exptOpt.transparency = true 
exptOpt.blur = 0.0 
exptOpt.includeProfile = false 
exptOpt.interlaced = false 
exptOpt.optimized = true 
exptOpt.quality = 100 
exptOpt.PNG8 = true // png 8 비트로 저장이 필요한 경우
exptOpt.colors = 128

// 관련하여 보다 상세한 옵션은 레퍼런스를 참고 하세요.

// 저장할 때
var expFile = new File("저장할 경로 및 파일명.png")
cDoc.exportDocument (expFile,ExportType.SAVEFORWEB,exptOpt)  // saveAS 가 아닙니다. 중요!

 

마지막에 saveForWeb 옵션을 사용해 보았는데요. 많은 분들이 웹용으로 이미지를 올리거나 할때는 이 옵션을 주로 사용하실 거라 생각합니다. 이때는 saveAs 가 아닌 exportDocument 를 이용하여 저장하게 되므로 주의 하시면 됩니다.

 

옵션은 스크립트 중 어디에 적어 도 상관 없습니다. 포토샵 자바스크립트는 첫줄부터 실행되기는 하지만 모든 코드를 미리 읽어 둔후 실행하므로 위에 예제와 같이 옵션과 저장 기능이 딱 붙어 있을 필요는 없습니다. 통상 저의 경우에는 저장 옵션들을 스크립트 가장 상단에 적어두고 코드 작성을 시작하기는 합니다.

 

관련하여 제가 설명드리지 못한 부족한 부분은 레퍼런스를 참고하시면 되는데요. 코딩에 관심이 있으시다면 반드시 레퍼런스를 받으셔서 본인이 작성하는 코드와 관련된 설명을 보시기 바랍니다. 학원이나 강좌보다 더욱 훌륭한 선생님이 될 것 입니다.

2019/06/12 - [DEV/Adobe Script] - 포토샵 스크립트 레퍼런스, 도움말 사용하기

 

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

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

diy-dev-design.tistory.com

 

그럼 이만~

 

 

 

 

 

반응형

+ Recent posts