"사진 애호가"로서 (좋아요, 나는 자격이 없다는 것을 인정합니다. 며칠 동안 사진을 찍고 있습니다 -_- !!) 항상 피할 수없는 한 가지가 있습니다. 즉, 사진이 exif 매개 변수를 가져올 수 있습니다. 내 블로그가 EXIF 정보를 표시하기 위해 플러그인을 설치했지만 플러그인이 여전히 강력하지 않다고 생각합니다. 또한 배치 크기 조정, 저작권 정보 등과 같은 일부 포괄적 인 작업을 고려해야합니다.
물론, 우리는 여전히 PS가 필요하며, 아이디어에 따라 특정 작업을 수행 할 수 있도록 PS 스크립트를 작성할 수 있습니다. :) Hehe, Wuji 포럼의 게시물에서 PS 스크립트를 찾았으며 (주로 시간, 렌즈 인식 및 초점 길이 인식)에 따라 일부 수정 사항을 추가했습니다. 렌더링은 질문 사진에 나와 있습니다. 스크립트를 사용하면 훨씬 더 편리합니다. 예를 들어, 배치로 Exif 경계를 추가하려면 매우 간단합니다. 동작을 녹음 한 다음이 작업을 실행합니다. :)
마지막 으로이 스크립트를 첨부하십시오.
displayDialogs = dialogModes.NO; var defaultrulerunits = preferences.rulerunits; 환경 설정. rulerunits = units.pixels; // 긴 문자열을 단일 문자열로 분해 함 함수 exploitArray (item) {var i = 0; var count = 0; var tempstring = 새 문자열 (항목); temparray = 새로운 배열 (1); do {i = tempstring.indexof ( ":"); if (i> 0) tempstring = tempstring.substr (i+1, tempstring.length-i-1); i = tempstring.indexof ( ">"); if (i> 0) {temparray [count] = tempstring .substr (0, i); tempstring = tempstring.substr (i+1, tempstring.length-i-1); count ++;} i = tempstring.indexof ( "<"); if (i> 0) {temparray [count] = tempstring.substr (0, i); tempstring = tempstring.substr (i-1, tempstring.length-i+1); count ++;}} while (tempstring.indexof ( "</x : xmpmeta>")> 0); temparray [count] = tempstring; 반환 temparray; } var i = 0; var j = 0; var k = 0; var presulotion = 72; var ad = ""; var resratio = ""; var imageratio = ""; var datearray1 = ""; var datearray2 = ""; var montharray = ""; var phodate = "; var photime ="; photoHight = ""; var exifdata = ""; var black = ""; var white = ""; var grey = ""; var fwidth = ""; var fhight = "" "; var tsize =" "; var tleft =" "; var thight =" "; var infolayer =" "; var ti =" "; namelayer =" "; var tn = ""; var stringtemp = ""; // 임시 문자열 var make = ""; // 카메라 회사 var model = ""; // 카메라 모델 var 카메라 = ""; // 카메라 var lens = ""; // look type var lensused = ""; // var focallength = ""; // 초점 길이 var exposureTime = ""; // shutter var fnumber = ""; // aperture var isospeedratings = ""; // ISO 설정 var dateMeoriginal = ""; // 시간 촬영 시간 var expliasvalue = ""; // 노출 보상 var explogram = ""; // 노출 프로그램 모드 fired = "; // 플래시 모드 // 저작권 및 자신의 웹 이름 등과 같이 쓰고 싶은 내용으로 변경됩니다 .//if 비어 있으면 카메라에서 설정 한 이름은 var creator = "사진 by kaisir"; // 사진기 ad = activedocument; // Aglin은 이미지 크기를 온라인 커뮤니케이션 크기로 자동 변경하기 위해 코드를 컴파일했습니다. // 약간의 수정, 어느 쪽이든 넓고 1000보다 좁은 경우 자동으로 자르면 // 여기에서 가장 긴면은 750이고 가장 짧은면은 500입니다. // 카메라에서 찍은 이미지의 비율에 따라 종횡비를 설정하지 않으면 제거 할 수 있습니다. //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ad.width.value/ad.height.value; if (imageratio> 1) ad.resizeImage (resizemax, Resizemin, Presulotion, resamplemethod.bicubicsharper); if (imageRatio == 1) ad.resizeImage (resizemax, resizemax, presulotion, resamplemethod.bicubicsharper); if (imageRatio <1) ad.resizeImage (Resizemin, resizemax, presulotion, resamplemethod.bicubicsharper); if (imageRatio <1) ad.resizeImage (Resizemin, resizemax, presulotion, resamplemethod.bicubicsharper); }//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CS는 EXIF 정보를 얻습니다. // (n = 0; n <temparray.length; n ++) {StringTemp = temparray [n]; if (stringtemp.indexof ( "exposuretime")! = -1) {exposureTime = temparray [n+1]; break;}} // (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ( "fnumber")! = -1) {fnumber = temparray [n+1]; break;}} // (n = 0; n <n <n <n <n+); StringTemp = temparray [n]; if (stringtemp.indexof ( "ExplerProgram")! = -1) {ExplicProgram = temparray [n+1]; break;}} // 노출 보상 (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ( "ExplerBiasValue")! = -1) {ExplicBiasValue = temparray [n+1]; break;}} // (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ( "fieled")! = -1) {fieled = temparray [n+1]; break;}} // 샷 날짜와 시간 및 시간 (n = 0; n <temparray.length; n ++) {StringTemp = temparray [n]; if (stringtemp.indexof ( "datetimeoriginal")! = -1) {dateTimeOriginal = temparray [n+1]; break;}} // (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (temparray [n] == "focallength") {focallength = temparray [n+1]; break;}} // iso setting (n = 0; n <temparrray.) StringTemp = temparray [n]; if (stringtemp.indexof ( "isospeedratings")! = -1) {isospeedratings = ", iso"+temparray [n+5]; break;}} // (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (temparray [n] == "렌즈") {lens = temparray [n+1]; break;}} // 카메라 제조업체 (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ( "make")! = -1) {make = temparray [n+1]; break;}} // 카메라 모델 (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ( "model")! = -1) {var model = temparray [n+1]; break;}} // 일부 카메라 모델의 경우 제조업체의 부품을 포함하지 마십시오 // camera = make+model; // 일부 카메라 모델의 경우 제조업체의 부품 카메라 = 모델을 포함합니다. // (n = 0; n <temparray.length; n ++) {stringtemp = temparray [n]; if (stringtemp.indexof ( "creator")! = -1 && creater == ") {creater = temparray [n+5]; break;}} // 셔터 속도 확인 DateArray1 = ExposureTime.split ( "/"); j = datearray1 [0]; i = datearray1 [1]; if (j/i> = 1) exposuretime = parseint (j/i)+"."+(j-parseint (j/i)*i); else {i = parseint (i/j); DateArray1 [0]; j = datearray1 [1]; if (j> 1) fnumber = i/j; elsefnumber = i; // 노출 보상을 소수 datearray1 = ExplerBiasValue.split ( "/")로 변환합니다. i = datearray1 [0]; 단지 *100/100, 1 자리를 유지하십시오. *10/10 // 여기에 2 자리를 유지하고, 20D는이 두 줄을 가질 수 없습니다. [ "정의", "매뉴얼", "정상 프로그램", "조리개 우선 순위", "셔터 우선 순위", "크리에이티브 프로그램", "액션 프로그램", "초상화 모드", "조경 모드"]; Exprogram = ExprogramArray [ExprogRam]; // 플래시 모드 DateArray1 = if (datearray1.indexof ( "true")! = -1) fireed = "flashon"; elsefired = "flashoff"; // 초점 길이 datearray1 = focallength.split ( "/"); i = datearray1 [0]; dateTimeOriginal.split ( "t"); phodate = datearray1 [0]; photime = datearray1 [1]; datearray2 = phodate.split ( "-"); MonstArray = [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; phodate = datearray2 [0]+"-"+montharray [datearray2 [1] -1]+"-"+datearray2 [2]; datearray2 = photime.split ( "+"); photime = datearray2 [0]; // 렌즈에 따라 변경하고 최대 초점 길이 (Lens! if!)에 따라 변경하십시오. {if (lens.indexof ( "17.0-40.0 mm")! = -1) lensused = "canon 17-40mm f4l USM"; } // 렌즈 정보가없는 경우 원래 방법을 사용하여 else {var foclength = parseint (focallength); lensused = "18-55mm 1 : 3.5-5.6g"; // if (foclength> = 17 && foclength <= 40) // lensused = "nikon"; // if (foclength> = 70 && foclength <= 200) // lensused = "nikon"; // if (foclength == "85") // lensused = "nikon"; // if (foclength == "100") // lensused = "nikon"; } // 선과 상자 그리기 // 검은 색 정의, 다른 색상을 정의 할 수도 있습니다. black = new solidcolor (); black.rgb.red = black.rgb.green = black.rgb.blue = 0; // 흰색을 정의하면 다른 색상을 정의 할 수도 있습니다. 화이트 = new SolidColor (); white.rgb.red = white.rgb.green = white.rgb.blue = 255; // 회색 정의, 다른 색상을 정의 할 수도 있습니다. 그레이 = new SolidColor (); grey.rgb.red = grey.rgb.green = grey.rgb.blue = 50; // 흰색 선을 추가하여 backgroundColor = 흰색; // 블랙 라인으로 변경된 경우 // backgroundcolor = black; // 흰색 선의 너비와 좁은 선은 2 또는 4로 설정되며, 양쪽에서 실제 너비는 2ad.resizecanvas (ad.width.value+2, ad.height.value+2, anchorposition.middlecenter)로 나뉩니다. // 회색 프레임 추가 // backgroundColor = 회색; // 검은 색 프레임 추가 backgroundColor = 검은 색; // 흰색 프레임으로 변경된 경우 // backgroundcolor = 흰색; // 테두리 너비와 높이, 여기서 검은 색 프레임의 너비와 좁은 좁은 것을 그림 너비의 1/40으로 설정하고, 양쪽에서 실제 너비는 2fwidth = parseint (photowidth/40); fhight = parseint (Photowidth/40); // Add로 나뉩니다. ad.resizecanvas (ad.width.value+fwidth, ad.height.value+fhight, middlecenter); // ad.resizecanvas (ad.width.value, ad.height.value+fhight+fhight, anchorposition.topcenter)를 용이하게하기 위해 하단에 넓은 지점을 추가합니다. // 표준 및 매개 변수 namelayer = ad.artlayers.add (); namelayer.kind = layerkind.text; tn = namelayer.textitem; tn.contents = Creator; // 저작권 글꼴, 글꼴 크기, 색상 및 대담한 등 TN.FONT = "STXINGKAI"; // 오른쪽 정렬 된 tn.justification = rightification.right; // font size tsize = parseint ((fwidth+10)/2); // 글꼴 왼쪽 마진과 바닥 마진 tleft = photowidth; thight = photo-hight-fhight+tsize; // 마커 tn.position = [tleft, thight]; tn.size = tsize = tsize = tsize = tsize = tsize = tsize = tsize. tn.color = 흰색; // 흰색 프레임 인 경우 글꼴은 검은 색 //tn.color = black입니다. tn.fauxbold = true; infolayer = ad.artlayers.add (); infolayer.kind = layerkind.text; ti = infolayer.textitem; // 오른쪽 정렬, 정렬 된 경우 다음 줄을 생략 할 수 있습니다. 다음 줄은 ti.justification = restification.right; thight = photohight+fhight+tsize; // 마커 ti.position = [tleft, thight]의 위치에 있습니다. @"+focallength+"mm, "+exposuretime+"sec, f/"; ti.contents = ti.contents+fnumber+", ev "+ExpendBiasvalue+IsSopeDratings; // 노출 프로그램에 관심이 없다면 다음 줄 ti.contents = ti.contents+", "+Proprogram+", "+Program+", "+Program;" ti.contents+"/u000d"+phodate+""+photime; // 글꼴, 글꼴 크기, 색상 등 Ti.font = "Bold"; //ti.font = "arial"; ti.size = tsize; ti.color = 흰색; // 흰색 상자 인 경우 글꼴은 검은 색 // ti.color = black; ti.fauxbold = true; ad.flatten (); // -----------