將以下javascript存成.jsx放到C:\Program Files\Adobe\Adobe Photoshop CS5\Presets\Scripts#target photoshop;
//將PS提到最上層
app.bringToFront();
//判斷是否有開啟圖檔
if(app.documents.length > 0){
//有開啟圖檔,設定doc為目前圖檔的參照(reference)
var AD = app.activeDocument;
//var AD = activeDocument.duplicate(); //建立副本
}else{
//沒有開啟圖檔
alert("請開啟要調整大小的圖檔");
var file = app.openDialog()
if (file[0]) {
app.load(file[0]);
var AD = app.activeDocument;
}
}
// 圖檔DPI 設定 (網頁用72,印刷300)
const IMAGE_DPI = 72;
// 邊框的比例(es. 1/100 = 1%)
const FRAME_THICKNESS = 1/100;
// exif說明文字字型
const TEXT_INFO_FONT = "Arial";
//exif說明文字大小
var rFontSize = 60;
//定義黑色
var black = new SolidColor();
black.rgb.red = black.rgb.green = black.rgb.blue = 0;
//定義白色
var white = new SolidColor();
white.rgb.red = white.rgb.green = white.rgb.blue = 255;
//yellow.rgb.red = 255, yellow.rgb.green = 255, yellow.rgb.blue = 255;
var photoWidth = AD.width.value; //圖片寬度
var photoHeight = AD.height.value; //圖片高度
var frameWidth = photoWidth*FRAME_THICKNESS;
var frameHeight = photoWidth*FRAME_THICKNESS;
//轉換圖檔成網頁用的解析度
var resRatio = AD.resolution/IMAGE_DPI;
if(resRatio != 1){
AD.resizeImage(photoWidth,photoHeight,IMAGE_DPI,ResampleMethod.BICUBIC);
}
var exposureTime = ""; //快門
var fNumber = ""; //光圈
var ISOSpeedRatings = ""; //ISO
var dateTimeOriginal = ""; //相片拍攝時間
var cameraModel =""; //相機型號
var cameraMake =""; //相機廠牌
//RE的pattern
var re = /([A-Za-z0-9- ]*),([A-Za-z0-9:=\.\/ ]*),([0-9]*),/gi;
//取得exif相關資訊
ShowMatches(AD.info.exif + ",", re);
backgroundColor = black; //邊框線顏色
//AD.resizeCanvas(wFrame,hFrame, AnchorPosition.MIDDLECENTER);
//加入四邊邊框框底
AD.resizeCanvas(photoWidth + frameWidth,photoHeight + frameHeight, AnchorPosition.MIDDLECENTER); //可以修改參數獲得不同的邊框大小
//底部再加大點,便於寫字,可以修改參數獲得你需要的下邊框大小
var addHeight = rFontSize + (2/100*photoHeight);
AD.resizeCanvas(photoWidth + frameWidth,photoHeight + frameHeight+ addHeight,AnchorPosition.TOPCENTER);
/*
//The parameters are the name of the action, and then
//the action set they belong to
app.doAction('Foo Action','RyanKeeter');
*/
// 加入exif的內容
var description = cameraMake + " " + cameraModel + " ISO" + ISOSpeedRatings + " " + exposureTime + " " + fNumber + " " + dateTimeOriginal;
var nameLayer = AD.artLayers.add();
nameLayer.kind = LayerKind.TEXT;
var TI = nameLayer.textItem;
TI.justification = Justification.RIGHT
TI.position = [photoWidth,photoHeight+rFontSize+10]; //設定主題文字位置
TI.contents = description;
TI.font = TEXT_INFO_FONT; //字體類型
TI.size = rFontSize; //字體大小,點數
TI.color = white; //字體顏色,需預先定義
TI.fauxBold = true; //加粗
function ShowMatches(src, re) {
var newLine = "\n";
var result;
var s = "";
//Get the first match.
result = re.exec(src);
while (result != null) {
//alert (RegExp.$1)
if(RegExp.$1=="Make")
cameraMake = RegExp.$2;
if(RegExp.$1=="Model")
cameraModel = RegExp.$2;
if(RegExp.$1=="Date Time Original")
dateTimeOriginal = RegExp.$2;
if(RegExp.$1=="Shutter Speed")
exposureTime = RegExp.$2;
if(RegExp.$1=="ISO Speed Ratings")
ISOSpeedRatings = RegExp.$2;
if(RegExp.$1=="F-Stop")
fNumber = RegExp.$2;
//Get the next match.
result = re.exec(src);
}
}
if(RegExp.$1=="Make")
cameraMake = RegExp.$2;
if(RegExp.$1=="Model")
cameraModel = RegExp.$2;
if(RegExp.$1=="Date Time Original")
dateTimeOriginal = RegExp.$2;
if(RegExp.$1=="Shutter Speed")
exposureTime = RegExp.$2;
if(RegExp.$1=="ISO Speed Ratings")
ISOSpeedRatings = RegExp.$2;
if(RegExp.$1=="F-Stop")
fNumber = RegExp.$2;
//Get the next match.
result = re.exec(src);
}
}
hi 你好 我想要請問一個 javascript 的問題
回覆刪除如果我有 17 * 24 個 小圖 想要組合成一個大圖
檔名有按照 行列的 數字排序
比如說 0-0.jpg ~ 0.16.jpg 是第一列
1-0.jpg ~ 1-16.jpg 是第二列
有可能在Photoshop裡 用Script 來達成
自動組合的功能嗎 ??
謝謝
to VIO~VIO~~
回覆刪除我是沒這樣用過
不過我想理論上應該可以的
你只要畫出17*24的選區
然後在一一填上圖片即可
選區的畫法可參考Photoshop CS5 JavaScript Ref.pdf
裡面的Selection.jsx範例
他會畫出棋盤格的選區喔
請問一下 一一填上 要怎麼弄?
回覆刪除to VIO~VIO~~
回覆刪除意思就是用迴圈,載入第一張圖檔,貼到第一個選區位置,然後再第二張,貼到第二個位置...依此類推囉
你只要找到相對應的ps script,應該是可以作,只是我這塊也沒深入研究,你可能要自己看文件了,這我幫不上忙了
當然如果你只是要弄縮圖目錄的話,不用那麻煩,PS本身就有縮圖目錄的功能啦