◆- Adobe插件与脚本区 主要讨论Adobe插件开发与软件脚本撰写

发表新主题 回复
 
只看楼主 主题工具
旧 2024-09-19, 21:30     #1
yakai3021 yakai3021 当前离线
见习会员
等级: 小兄弟
级别:0 | 在线时长:2小时 | 升级还需:3小时
 
Uid: 736182
注册日期: 2024-09-19, 21:19
帖子: 1
感谢: 0
0 个帖子获得 0 次感谢
声望: 10 yakai3021 向着好的方向发展
yakai3021 yakai3021 当前离线
见习会员
等级: 小兄弟
级别:0 | 在线时长:2小时 | 升级还需:3小时
 
Uid: 736182
注册日期: 2024-09-19, 21:19
帖子: 1
感谢: 0
0 个帖子获得 0 次感谢
声望: 10 yakai3021 向着好的方向发展
默认 指令碼輸入的數值 無法改變色彩平衡圖層的數值   



前言是
最近常常接到別的廠家生產的樣品
要到自己所呆的廠家重新生產
但是客戶檔案ILL內砍圖片檔...要求做到色差儀差值1以下
得大量在PS調色
所以想做一個插件可以批次製作等差數值的色彩平衡調整圖層
以做類似演色表的方式來追樣品顏色
但是我用指令碼,可以新增色彩平衡調整圖層
卻沒辦法將我輸入的數值做對應的變更

求大大指點迷津>"<

以下是我這邊的指令
// 建立輸入對話框
function getInput() {
var dialog = new Window("dialog", "請輸入色彩平衡數值");

// 陰影輸入欄位
dialog.add("statictext", undefined, "陰影:");
var shadowCyanRed = dialog.add("edittext", undefined, "0"); // 青色/紅色
var shadowMagentaGreen = dialog.add("edittext", undefined, "0"); // 洋紅/綠色
var shadowYellowBlue = dialog.add("edittext", undefined, "0"); // 黃色/藍色

// 中間調輸入欄位
dialog.add("statictext", undefined, "中間調:");
var midtoneCyanRed = dialog.add("edittext", undefined, "0");
var midtoneMagentaGreen = dialog.add("edittext", undefined, "0");
var midtoneYellowBlue = dialog.add("edittext", undefined, "0");

// 高光輸入欄位
dialog.add("statictext", undefined, "高光:");
var highlightCyanRed = dialog.add("edittext", undefined, "0");
var highlightMagentaGreen = dialog.add("edittext", undefined, "0");
var highlightYellowBlue = dialog.add("edittext", undefined, "0");

// 確認按鈕
var confirmButton = dialog.add("button", undefined, "確定");

// 監聽按鈕事件
confirmButton.onClick = function() {
dialog.close();
};

dialog.show();

// 獲取數值
return {
shadows: {
cyanRed: Number(shadowCyanRed.text),
magentaGreen: Number(shadowMagentaGreen.text),
yellowBlue: Number(shadowYellowBlue.text)
},
midtones: {
cyanRed: Number(midtoneCyanRed.text),
magentaGreen: Number(midtoneMagentaGreen.text),
yellowBlue: Number(midtoneYellowBlue.text)
},
highlights: {
cyanRed: Number(highlightCyanRed.text),
magentaGreen: Number(highlightMagentaGreen.text),
yellowBlue: Number(highlightYellowBlue.text)
}
};
}

// 創建「色彩平衡」調整圖層並命名
function createColorBalanceAdjustmentLayer() {
var idMk = charIDToTypeID("Mk "); // Make action
var desc = new ActionDescriptor();

var idnull = charIDToTypeID("null");
var ref = new ActionReference();
var idAdjL = charIDToTypeID("AdjL");
ref.putClass(idAdjL); // Adjustment Layer
desc.putReference(idnull, ref);

var idUsng = charIDToTypeID("Usng");
var descAdjustment = new ActionDescriptor();

// 設置調整圖層類型為「色彩平衡」
var idType = charIDToTypeID("Type");
var idClrB = charIDToTypeID("ClrB");
descAdjustment.putClass(idType, idClrB);

desc.putObject(idUsng, idAdjL, descAdjustment);
executeAction(idMk, desc, DialogModes.NO);

// 命名圖層為「色彩平衡A001」
var idsetd = charIDToTypeID("setd");
var descName = new ActionDescriptor();
var refLayer = new ActionReference();
refLayer.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
descName.putReference(idnull, refLayer);
var nameDesc = new ActionDescriptor();
nameDesc.putString(charIDToTypeID("Nm "), "色彩平衡A001");
descName.putObject(charIDToTypeID("T "), charIDToTypeID("Lyr "), nameDesc);
executeAction(idsetd, descName, DialogModes.NO);
}

// 設置色彩平衡參數
function setColorBalance(shadows, midtones, highlights, preserveLuminosity) {
var idsetd = charIDToTypeID("setd");
var desc = new ActionDescriptor();

var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID("AdjL"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt")); // 針對當前調整圖層
desc.putReference(charIDToTypeID("null"), ref);

var colorBalanceDesc = new ActionDescriptor();

// 設置陰影
var shadowList = new ActionList();
shadowList.putInteger(shadows.cyanRed); // 青色/紅色
shadowList.putInteger(shadows.magentaGreen); // 洋紅/綠色
shadowList.putInteger(shadows.yellowBlue); // 黃色/藍色
colorBalanceDesc.putList(charIDToTypeID("ShdW"), shadowList);

// 設置中間調
var midtoneList = new ActionList();
midtoneList.putInteger(midtones.cyanRed);
midtoneList.putInteger(midtones.magentaGreen);
midtoneList.putInteger(midtones.yellowBlue);
colorBalanceDesc.putList(charIDToTypeID("MdtW"), midtoneList);

// 設置高光
var highlightList = new ActionList();
highlightList.putInteger(highlights.cyanRed);
highlightList.putInteger(highlights.magentaGreen);
highlightList.putInteger(highlights.yellowBlue);
colorBalanceDesc.putList(charIDToTypeID("HghW"), highlightList);

// 保留亮度
colorBalanceDesc.putBoolean(charIDToTypeID("PrsL"), preserveLuminosity);

desc.putObject(charIDToTypeID("T "), charIDToTypeID("ClrB"), colorBalanceDesc);
executeAction(idsetd, desc, DialogModes.NO);
}

// 主程序
function main() {
// 創建色彩平衡調整圖層
createColorBalanceAdjustmentLayer();

// 保存剛創建的圖層的引用
var refLayer = new ActionReference();
refLayer.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));

// 從輸入對話框取得陰影、中間調、高光數值
var inputValues = getInput();
if (!inputValues) {
return; // 如果輸入不正確,結束程式
}

// 確保選取到的是色彩平衡圖層
var desc = new ActionDescriptor();
desc.putReference(charIDToTypeID("null"), refLayer);
executeAction(charIDToTypeID("slct"), desc, DialogModes.NO);

// 輸出數值以供調試
$.writeln("Shadows - Cyan/Red: " + inputValues.shadows.cyanRed);
$.writeln("Shadows - Magenta/Green: " + inputValues.shadows.magentaGreen);
$.writeln("Shadows - Yellow/Blue: " + inputValues.shadows.yellowBlue);

$.writeln("Midtones - Cyan/Red: " + inputValues.midtones.cyanRed);
$.writeln("Midtones - Magenta/Green: " + inputValues.midtones.magentaGreen);
$.writeln("Midtones - Yellow/Blue: " + inputValues.midtones.yellowBlue);

$.writeln("Highlights - Cyan/Red: " + inputValues.highlights.cyanRed);
$.writeln("Highlights - Magenta/Green: " + inputValues.highlights.magentaGreen);
$.writeln("Highlights - Yellow/Blue: " + inputValues.highlights.yellowBlue);

// 設置色彩平衡並保留亮度
setColorBalance(inputValues.shadows, inputValues.midtones, inputValues.highlights, true);
}

// 執行主程序
main();
yakai3021 当前离线   回复时引用此帖回复时引用此帖
发表新主题 回复


发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子

论坛启用 vB 代码
论坛启用 表情图标
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


律师声明:本站内容,均具有版权,未经书面授权,禁止转载,严禁镜像,违者承担一切后果!
论坛广告报价   广告联系及办理企业会员服务QQ:57880388 站务管理QQ:35529388


所有时间均为 +8, 现在的时间是 2025-01-04 15:14.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
 
Copyright © 2004-2022