#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;