포토샵 스크립트 (낙관및 사진정보 삽입하기)


#target photoshop


//현재 열려있는 파일중 가장 위로 보여지는 파일 선택
app.bringToFront();


//현재 단위정보 기록
var strtRulerUnits = app.preferences.rulerUnits;
var strtTypeUnits = app.preferences.typeUnits;


//기본 유닛 단위 = 픽셀
app.preferences.rulerUnits = Units.PIXELS;


//픽셀로 지정해도 포인트로 처리되는 경우가 있어서 포인트로 처리
app.preferences.typeUnits = TypeUnits.POINTS;


//사진 정보 객체
var exif = app.activeDocument.info.exif;
//사진에 있는 메타 데이터를 가져온다.
 var xmp = app.activeDocument.xmpMetadata;
var fullstring = xmp[“rawData”].toString();
//렌즈의 모델명을 가져온다.
var lens =fullstring.substring(fullstring.indexOf (“<aux:Lens>”, 0)+10,fullstring.indexOf (“</aux:Lens>”, 0));
//alert(lens);
// 노출 보정량 가져오기
var ExposureBias  = fullstring.substring(fullstring.indexOf (“<exif:ExposureBiasValue>”, 0)+24,fullstring.indexOf (“</exif:ExposureBiasValue>”, 0));
var strarr =ExposureBias.split(“/”);
ExposureBias = (strarr[0] / strarr[1]).toFixed (2);
ExposureBias += “EV”;


alert(ExposureBias);


// suppress all dialogs
app.displayDialogs = DialogModes.NO;


//텍스트 레이어의 기본 색상 정의 : 검정색
var textColor = new SolidColor;
textColor.rgb.red = 0;
textColor.rgb.green = 0;
textColor.rgb.blue = 0;


//사진정보 문장을 저장할 변수 선언
var exifDoc = “”;


// 사진정보의 명칭에서 찾을 내용과 찾은 결과를 저장하는 배열
// 포토샵 영문버젼에서는 Exif정보도 모두 영문이더군요…그래서 추가합니다.
//              한글검색어,       영문검색어,           찾은결과
var setExif = [[“모델”,           “Model”,              “”]
              ,[“원본 날짜 시간”, “Date Time Original”, “”]
              ,[“ISO 속도율”,     “ISO Speed Ratings”,  “”]
              ,[“노출 시간”,      “Exposure Time”,      “”]
              ,[“F-스톱”,         “F-Stop”,             “”]
              ,[“초점 거리”,      “Focal Length”,       “”]
              ,[“플래시”,         “Flash”,              “”]
              ,[“흰색 균형”,      “White Balance”,      “”]
              ,[“렌즈”,      “LensModel”,      “”]
              ,[“보정”,      “ExposureBiasValue”,      “”]]           ;
                                             
         //  ,[“측광모드”,      “MeteringMode”,      “”]   
          // ,[“노출보정”,      “ExposureBiasValue”,      “”]   
          // $exif[“ExposureBias”] = sprintf(“%4.2f”,@($tmp[0]/$tmp[1])).”EV”;
        //  ExposureMode // 노출모드
         


// 사진정보 검색 Loop                         
for (i=0; i<exif.length; i++) {               
        for (j=0; j<setExif.length; j++) {    
                // Exif정보 검색시 한글과 영문을 동시에 체크하여 처리
                if ((setExif[j][2].length < 1) && ((exif[i][0].indexOf(setExif[j][0]) >= 0) || (exif[i][0].indexOf(setExif[j][1]) >= 0))) {
                        setExif[j][2] = exif[i][1];
                     
                        break;                
                }                             
        }                                     
}                                             


//exifDoc = “『”
//사진정보 문장 생성                          


exifDoc = exifDoc + setExif[0][2] + ”  |”;  //모델    
//사진정보 검색에서 찾지 못하거나 정보가 없는 경우를 위한 IF처리


// 렌즈정보 입력
if (setExif[8][1].length > 0 ) exifDoc = exifDoc + ”    ” + lens; //렌즈


//exifDoc += “』”;


// 사진정보 텍스트 레이어 생성(사진의 왼쪽에 흰바탕의 10픽셀 테두리에)
var newTextLayer1 = activeDocument.artLayers.add();
newTextLayer1.kind = LayerKind.TEXT;
newTextLayer1.textItem.justification = Justification.LEFT;  //오른쪽정렬
newTextLayer1.textItem.position = Array(100, 40);  //텍스트레이어 시작 위치(x,y) : 좌하부
newTextLayer1.textItem.size = 2;  //8px -> 2.4pt
newTextLayer1.textItem.color = textColor;
newTextLayer1.textItem.font = “ollehche_v2”;  //굴림체
newTextLayer1.textItem.antiAliasMethod = AntiAlias.CRISP; //뚜렷하게
newTextLayer1.textItem.direction = Direction.HORIZONTAL;  //세로글자
newTextLayer1.textItem.contents = exifDoc;


exifDoc = “”;


//exifDoc = “『”


if (setExif[4][1].length > 0 ) exifDoc = exifDoc + setExif[4][2]+ ”  |  “; //조리개
if (setExif[9][1].length > 0 ) exifDoc = exifDoc + ExposureBias+ ”  |”; //보정
if (setExif[3][1].length > 0 ) exifDoc = exifDoc + ”   ” + setExif[3][2]+ ”  |”; //셔터 속도
if (setExif[5][1].length > 0 ) exifDoc = exifDoc + ”   ” + setExif[5][2]+ ”  |”; //초점거리
if (setExif[2][1].length > 0 ) exifDoc = exifDoc + ”   ISO ” + setExif[2][2]+ ”  |”; //ISO
// 플래쉬의 경우 16과 9로 표기되더군요… 왠지는… 쩝(제꺼만 그런가???)
// 그래서 9인 경우 On으로 아닌경우 Off로 처리
if (setExif[6][1].length > 0 ) exifDoc = exifDoc + ”   Flash ” + (setExif[6][2]==”9″?”On”:”Off”)+ ”  |”; //플래쉬 사용유무
if (setExif[7][1].length > 0 ) exifDoc = exifDoc + ”   WB ” + setExif[7][2]+ ”  |”; //화이트벨런스
/*
if (setExif[1][1].length > 0 ) exifDoc = exifDoc + ”   ” + setExif[1][2].substring(0,4) + “-”
                                                         + setExif[1][2].substring(5,7) + “-”
                                                         + setExif[1][2].substring(8,10) + ”  “;  //원본날짜시간
*/
if (setExif[1][1].length > 0 ) exifDoc = exifDoc + ”   ” + setExif[1][2] + ”  “;  //원본날짜시간


                        
                        
//exifDoc += “』”;
//검색 처리 결과 예제
//Anycall SCH-C330   2009-11-08   0.00   화벨 자동  –> 핸드폰으로 찍은 사진 결과
//Canon EOS 450D   2009-11-12   ISO 400   17.0 sec   f/11   18.0 mm   플래쉬 Off   화벨 자동  –> DSLR로 찍은 사진 결과


// 사진정보 텍스트 레이어 생성(사진의 왼쪽에 흰바탕의 10픽셀 테두리에)
var newTextLayer1 = activeDocument.artLayers.add();
newTextLayer1.kind = LayerKind.TEXT;
newTextLayer1.textItem.justification = Justification.LEFT;  //오른쪽정렬
newTextLayer1.textItem.position = Array(100, 60);  //텍스트레이어 시작 위치(x,y) : 좌하부
newTextLayer1.textItem.size = 2;  //8px -> 2.4pt
newTextLayer1.textItem.color = textColor;
newTextLayer1.textItem.font = “ollehche_v2”;  //굴림체
newTextLayer1.textItem.antiAliasMethod = AntiAlias.CRISP; //뚜렷하게
newTextLayer1.textItem.direction = Direction.HORIZONTAL;  //세로글자
newTextLayer1.textItem.contents = exifDoc;


var newTextLayer1 = activeDocument.artLayers.add();
newTextLayer1.kind = LayerKind.TEXT;
newTextLayer1.textItem.justification = Justification.LEFT;  //오른쪽정렬
newTextLayer1.textItem.position = Array(100, 80);  //텍스트레이어 시작 위치(x,y) : 좌하부
newTextLayer1.textItem.size = 2;  //8px -> 2.4pt
newTextLayer1.textItem.color = textColor;
newTextLayer1.textItem.font = “ollehche_v2”;  //굴림체
newTextLayer1.textItem.antiAliasMethod = AntiAlias.CRISP; //뚜렷하게
newTextLayer1.textItem.direction = Direction.HORIZONTAL;  //세로글자
newTextLayer1.textItem.contents = “Copyright (c) HanNim. All rights reserved.”;



// 낙관 텍스트 레이어 생성(사진의 하단에 흰바탕의 20픽셀 테두리에)
var newTextLayer2 = activeDocument.artLayers.add();
newTextLayer2.kind = LayerKind.TEXT;
newTextLayer2.textItem.justification = Justification.CENTER;  //중앙정렬
newTextLayer2.textItem.position = Array(activeDocument.width*0.5, activeDocument.height-40);   //텍스트레이어 시작 위치(x,y) : 중하부
newTextLayer2.textItem.size = 8;  //30px -> 9pt
newTextLayer2.textItem.color = foregroundColor;
newTextLayer2.textItem.font = “Inkburrow”;
newTextLayer2.textItem.antiAliasMethod = AntiAlias.SMOOTH;  //부드럽게
newTextLayer2.textItem.contents = ” photographed by HanNim”;


// 블로그 주소 텍스트 레이어 생성(사진의 하단에 흰바탕의 20픽셀 테두리에)
/*var newTextLayer3 = activeDocument.artLayers.add();
newTextLayer3.kind = LayerKind.TEXT;
newTextLayer3.textItem.justification = Justification.RIGHT;  //오른쪽 정렬
newTextLayer3.textItem.position = Array(activeDocument.width-30, activeDocument.height-15);  //텍스트레이어 시작 위치(x,y) : 우하부
newTextLayer3.textItem.size = 6;  //12px -> 3.6pt
newTextLayer3.textItem.color = textColor;
newTextLayer3.textItem.font = “Pristina-Regular”;
newTextLayer3.textItem.antiAliasMethod = AntiAlias.CRISP;  //뚜렷하게
newTextLayer3.textItem.contents = “http://www.LovesFactory.com“;
*/
//기본 및 텍스트 유닛 정의 원상복구
app.preferences.rulerUnits = strtRulerUnits;
app.preferences.typeUnits = strtTypeUnits;


//사용 객체 초기화
docRef = null;
textColor = null;
setExif = null;
exif = null;
exifDoc = null;
strtRulerUnits = null;
strtTypeUnits = null;
newTextLayer1 = null;
newTextLayer2 = null;
newTextLayer3 = null;


답글 남기기

이메일 주소는 공개되지 않습니다.