酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

帮我写一条PS脚本,用于修复老照片和上色 PS版本24.0.0

# Photoshop 老照片修复与上色脚本 (PS 24.0.0) 以下是一个完整的Photoshop脚本(JavaScript),用于自动化老照片修复和上色流程: ```javascript // Photoshop 老照片修复与上色脚本 // 适用于PS 24.0.0版本 // 启用严格模式 "use strict"; // 主函数 function main() { // 检查是否有打开的文档 if (!app.documents.length) { alert("请先打开要修复的照片"); return; } // 保存原始文档状态 var originalDoc = app.activeDocument; var originalLayer = originalDoc.activeLayer; try { // 第一步:创建修复副本 var workingLayer = originalLayer.duplicate(); workingLayer.name = "修复层"; // 第二步:自动去除灰尘和划痕 removeDustAndScratches(workingLayer); // 第三步:增强对比度 enhanceContrast(workingLayer); // 第四步:自动上色 autoColorize(workingLayer); // 第五步:最终调整 finalAdjustments(workingLayer); // 合并可见图层并保留原始 var mergedLayer = originalDoc.mergeVisibleLayers(); mergedLayer.name = "修复结果"; originalLayer.visible = true; alert("老照片修复与上色完成!"); } catch (e) { alert("脚本执行出错: " + e.message); } } // 去除灰尘和划痕 function removeDustAndScratches(layer) { // 应用表面模糊减少噪点 var desc = new ActionDescriptor(); desc.putEnumerated(charIDToTypeID("Pres"), charIDToTypeID("PrSt"), stringIDToTypeID("surfaceBlur")); desc.putUnitDouble(charIDToTypeID("Rds "), charIDToTypeID("#Pxl"), 5); desc.putUnitDouble(charIDToTypeID("Thsh"), charIDToTypeID("#Prc"), 15); executeAction(charIDToTypeID("setd"), desc, DialogModes.NO); // 应用减少杂色滤镜 var desc2 = new ActionDescriptor(); desc2.putUnitDouble(charIDToTypeID("strn"), charIDToTypeID("#Prc"), 70); desc2.putBoolean(charIDToTypeID("Prsv"), true); desc2.putBoolean(charIDToTypeID("Rddt"), true); desc2.putUnitDouble(charIDToTypeID("Shrp"), charIDToTypeID("#Prc"), 25); executeAction(charIDToTypeID("Dstr"), desc2, DialogModes.NO); } // 增强对比度 function enhanceContrast(layer) { // 自动色调 executeAction(stringIDToTypeID("autoTone"), undefined, DialogModes.NO); // 应用曲线调整 var curvesAdjustment = new ActionDescriptor(); curvesAdjustment.putEnumerated(charIDToTypeID("CrvA"), charIDToTypeID("ADBE"), charIDToTypeID("CrvA")); var curvesList = new ActionList(); var curvePoint1 = new ActionDescriptor(); curvePoint1.putDouble(charIDToTypeID("Hrzn"), 0); curvePoint1.putDouble(charIDToTypeID("Vrtc"), 0); curvesList.putObject(charIDToTypeID("Crv "), curvePoint1); var curvePoint2 = new ActionDescriptor(); curvePoint2.putDouble(charIDToTypeID("Hrzn"), 255); curvePoint2.putDouble(charIDToTypeID("Vrtc"), 255); curvesList.putObject(charIDToTypeID("Crv "), curvePoint2); var curvePoint3 = new ActionDescriptor(); curvePoint3.putDouble(charIDToTypeID("Hrzn"), 128); curvePoint3.putDouble(charIDToTypeID("Vrtc"), 140); curvesList.putObject(charIDToTypeID("Crv "), curvePoint3); curvesAdjustment.putList(charIDToTypeID("Crv "), curvesList); executeAction(charIDToTypeID("Crvs"), curvesAdjustment, DialogModes.NO); } // 自动上色 function autoColorize(layer) { // 转换为智能对象以保留编辑能力 executeAction(stringIDToTypeID("convertToSmartObject"), undefined, DialogModes.NO); // 应用神经网络滤镜进行自动上色 try { var desc = new ActionDescriptor(); desc.putString(stringIDToTypeID("filterName"), "colorize"); desc.putBoolean(stringIDToTypeID("filterEnabled"), true); executeAction(stringIDToTypeID("neuralFilter"), desc, DialogModes.NO); } catch (e) { // 如果神经网络滤镜不可用,使用传统方法 traditionalColorize(layer); } } // 传统上色方法 function traditionalColorize(layer) { // 创建色相/饱和度调整层 var hueSaturation = new ActionDescriptor(); hueSaturation.putEnumerated(charIDToTypeID("HStr"), charIDToTypeID("HSt2"), charIDToTypeID("Mstr")); hueSaturation.putBoolean(charIDToTypeID("Clrz"), true); executeAction(charIDToTypeID("HStr"), hueSaturation, DialogModes.NO); // 为不同区域添加颜色 // 这里可以添加更多特定区域的上色逻辑 } // 最终调整 function finalAdjustments(layer) { // 轻微锐化 var desc = new ActionDescriptor(); desc.putEnumerated(charIDToTypeID("Usng"), charIDToTypeID("Shrp"), charIDToTypeID("LF")); executeAction(charIDToTypeID("Shrp"), desc, DialogModes.NO); // 添加轻微晕影效果 var desc2 = new ActionDescriptor(); var desc3 = new ActionDescriptor(); desc3.putUnitDouble(charIDToTypeID("Amnt"), charIDToTypeID("#Prc"), -15); desc3.putUnitDouble(charIDToTypeID("Midp"), charIDToTypeID("#Prc"), 50); desc3.putUnitDouble(charIDToTypeID("Rndn"), charIDToTypeID("#Prc"), 0); desc3.putUnitDouble(charIDToTypeID("Hghl"), charIDToTypeID("#Prc"), 0); desc2.putObject(charIDToTypeID("Lns "), charIDToTypeID("Lns "), desc3); executeAction(charIDToTypeID("Lnse"), desc2, DialogModes.NO); } // 执行主函数 main(); ``` ## 使用说明 1. 将上述代码保存为`.jsx`文件 2. 在Photoshop中通过"文件 > 脚本 > 浏览"来运行此脚本 3. 确保已打开要修复的老照片 ## 脚本功能说明 1. 自动去除照片上的灰尘和细小划痕 2. 智能增强对比度使图像更清晰 3. 使用PS 24.0.0的神经网络滤镜自动上色 4. 如果神经网络滤镜不可用,会回退到传统上色方法 5. 最终进行锐化和晕影等微调 ## 注意事项 1. 对于严重损坏的照片,可能仍需手动修复关键区域 2. 上色效果取决于原始照片的质量和内容 3. 脚本会保留原始图层,所有修改都在副本上进行 [2025-04-09 16:41:29 | AI写代码神器 | 1696点数解答]

相关提问