출처 : SLR클럽자료실
참고 : slr클럽자료실다른글
어도비 사이트의 스크립트 관련 도움말 : http://help.adobe.com/ko_KR/Photoshop/11.0/WSfd1234e1c4b69f30ea53e41001031ab64-7418a.html

외국사이트에서 소스 다운 받기
1. http://www.photoshopsupport.com/tutorials/jennifer/photoshop-scripts.html
2. http://morris-photographics.com/photoshop/scripts/hide-layers.html





포토샵에서 스크립트를 지원하는걸 이제서야 알다니.. ㅋㅋ 부끄럽다.. ㅋㅋ

액션을 사용하면서 항상 불만이었던게 액션을 코드 형태로 수정할 수 없다는게 불만이었는데..
스크립트로 컨트롤 할 수 있는 방법이 있었다니..


이 자리를 빌어,
이런 좋은 정보를 주신 SLR클럽의 율e사랑님께 감사의 말씀을 올립니다.


첨부한 resizer.jsx 파일은 율e사랑님께서 제공해주신 파일이며,
자세한 내용은 위 출처에 있는 링크로 가서 보면 된다.


요약하자면..
  1. 포토샵에서도 스크립트를 지원하며, 그 스크립트 언어는 자바스크립(.jsx)과 비쥬얼 베이직(.vbs)이다. 여기선 javascript.
  2. 스크립트의 기본 위치는 "C:\Program Files\Adobe\Adobe Photoshop CS3\UserActionScript\JavaScript\Resizer.jsx" 이다.
  2. 포토샵 메뉴에서, 파일 > 스크립트 > 찾아보기 를 선택하면 스크립트를 실행시킬 수 있다.



*율e사랑님께서 소스에 달아주신 코멘트를 보면 아래와 같습니다.
    1: #target photoshop
   2: app.bringToFront();
   3: // 파일 자체만으로 실행할 포토샵을 타겟으로 실행한다는 코드로 보여집니다. 다시한번 말씀 드리지만 저는 자바를 전혀 모릅니다. ㅜㅡ
   4:
   5:
   6:
   7: if (!app.documents.length > 0) {
   8: alert(" .");
   9: }
  10: else {
  11: // 포토샵에 아무런 사진도 불러오지 않았을 경우 실행을 취소한다는 코드입니다. 열려진 파일이 있을경우 아래 코드를 실행합니다.
  12:
  13:
  14:
  15: var doc = app.activeDocument.duplicate();
  16: // 열려있는 사진을 이미지 복제하여 사본을 만든 , doc 라고 정의합니다.
  17:
  18:
  19:
  20: fitImage(1280);
  21: // 아래의 fitImage 라는 함수를 실행하며 입력조건으로 최종 축소이미지(장축기준 - 1280픽셀) 사이즈 적용합니다. 800픽셀로 축소할시는 1280을 800으로 변경하면 되겠죠?
  22:
  23:
  24:
  25: // 위에서 실행하라는 함수의 내용입니다.
  26: function fitImage(newImgSize) {
  27:         docRef = app.activeDocument;
  28:         // 열려진 문서를 docRef 이름으로 정의합니다.
  29:         var prodImg = docRef.activeLayer;
  30:         // docRef 이름으로 정의된 현재 레이어를 prodImg 이름으로 정의합니다.
  31:         var current_units = preferences.rulerUnits;
  32:         // 부분을 모르겠습니다. 대략 단위에 대한 정의라고만...
  33:         var A = 50;
  34:         // 언샵마스크 적용시 Amount 수치입니다.
  35:         var B = 0.8;
  36:         // 역시 언샵마스크 적용시 Radius 시작값입니다. 0.8을 적용할 0.2씩 차감되어 0.8 --> 0.6 --> 0.4  이런식으로 축소시 적용되는 , 강한 샤픈을 원하면 수치를 조정하면 됩니다.
  37:
  38:         if (docRef.width > docRef.height) {
  39:         // 조건식입니다. 가로가 세로보다 경우 , 가로사진을 말합니다.
  40:         while(docRef.width * 0.75 > newImgSize){
  41:                 preferences.rulerUnits = Units.PERCENT
  42:                 // 크기에 대한 단위를 %(퍼센트) 지정합니다.
  43:                 docRef.resizeImage(75, undefined, undefined, ResampleMethod.BICUBICSHARPER)
  44:                 // 리사이즈 명령어입니다.
  45:                 //(정의된 현재문서.resizeImage(가로크기(%), 세로크기(미적용), 해상도(미적용), 리사이즈알고리즘)
  46:                 prodImg.applyUnSharpMask(A,B,3);
  47:                 // 언샵마스크를 적용합니다.
  48:                 // (정의된 현재레이어.applyUnSharpMask(Amount값, Radius값, 고대비값)
  49:                 // 여기서 Radius값은 B라는 변수로 정의되어 있는바, 조건은 아래의 코드에 따릅니다.
  50:                 if (B > 0.1) {
  51:                         B = B - 0.2
  52:                 } else
  53:                 if (B <= 0.1) {
  54:                         B = 0.1
  55:                 }
  56:                 // 순환중 적용되는 Radius값이 0.1을 초과할 경우에만 이전 값에서 0.2씩 차감하고
  57:                 // 0.1과 같거나 부족할 경우에는 항상 0.1을 적용하라는 말입니다.
  58:                 preferences.rulerUnits = Units.PIXELS;
  59:                 // 크기에 대한 단위를 원래의 픽셀 단위로 바꿔 줍니다.
  60:         }
  61:         // 위의 코드는 순환문입니다. 가로길이의 75% 크기가 축소하고자 하는 이미지 (1280픽셀)보다 경우에만 코드를 수행하라는 의미입니다.
  62:
  63:                 preferences.rulerUnits = Units.PIXELS;
  64:                 docRef.resizeImage(newImgSize, undefined, undefined, ResampleMethod.BICUBICSHARPER)
  65:                 prodImg.applyUnSharpMask(300,0.1,3);
  66:                 // 75% 줄여 원하는 축소이미지에 가장 근접하면 순환문을 중지하고 처음 명시한 1280픽셀 크기로 최종 적용하여 마칩니다.
  67:                 // "newImgSize" 라고 정의된 최종이미지 크기(1280픽셀) 가로사이즈에 적용하고 언샵마스크를
  68:                 // 300, 0.1, 3 이라는 수치로 적용하라는 의미입니다.
  69:
  70:
  71: // 아래 코드는 내용과 동일하며 가로사진과 세로사진을 구별하는 조건으로써 동일한 과정을 수행하는 코드입니다.
  72:         } else
  73:         if (docRef.width < docRef.height) {
  74:
  75:         while(docRef.height * 0.75 > newImgSize){ //세로사진
  76:                 preferences.rulerUnits = Units.PERCENT
  77:                 docRef.resizeImage(undefined, 75, undefined, ResampleMethod.BICUBICSHARPER)
  78:                 prodImg.applyUnSharpMask(A,B,3);
  79:                 if (B > 0.1) {
  80:                         B = B - 0.2
  81:                 } else
  82:                 if (B <= 0.1) {
  83:                         B = 0.1
  84:                 }
  85:                 preferences.rulerUnits = Units.PIXELS;
  86:         }
  87:
  88:                 preferences.rulerUnits = Units.PIXELS;
  89:                 docRef.resizeImage(undefined, newImgSize, undefined, ResampleMethod.BICUBICSHARPER)
  90:                 prodImg.applyUnSharpMask(300,0.1,3);
  91:
  92:         } else
  93:         if (docRef.width == docRef.height) {
  94:
  95:         while(docRef.height * 0.75 > newImgSize){ //정사각형
  96:                 preferences.rulerUnits = Units.PERCENT
  97:                 docRef.resizeImage(undefined, 75, undefined, ResampleMethod.BICUBICSHARPER)
  98:                 prodImg.applyUnSharpMask(A,B,3);
  99:                 if (B > 0.1) {
100:                         B = B - 0.2
101:                 } else
102:                 if (B <= 0.1) {
103:                         B = 0.1
104:                 }
105:                 preferences.rulerUnits = Units.PIXELS;
106:
107:         }
108:                 preferences.rulerUnits = Units.PIXELS;
109:                 docRef.resizeImage(newImgSize, undefined, undefined, ResampleMethod.BICUBICSHARPER)
110:                 prodImg.applyUnSharpMask(300,0.1,3);
111:
112:         }
113:      }
114: }




[ 내용 추가 : 2011.12.14 ]

사진의 exif정보를 불러와 타임 스탬프를 찍어주는 소스..

정보출처 : http://hannim.com/682

다운받기 : photoshop_script_printPhotoTimeStamp_20111214-1.jsx




profile