论坛帮助 |
社区圈子 |
日历事件 |
2024-09-19, 21:30 | #1 | ||
|
|||
见习会员
等级: 小兄弟
|
最近常常接到別的廠家生產的樣品 要到自己所呆的廠家重新生產 但是客戶檔案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(); |
||
回复时引用此帖 |