# Photoshop脚本:智能对象转链接对象并重新链接 以下是一个完整的Photoshop脚本,可以将文档中的第一个智能对象转换为链接对象,保存到桌面,然后遍历文档中所有智能对象并重新链接到该文件,最后嵌入所有链接的智能对象: ```javascript // Photoshop脚本:智能对象处理 // 功能:将第一个智能对象转为链接对象,然后所有智能对象重新链接到该文件,最后嵌入 // 保存链接文件的函数 function saveLinkedFile(doc, layer, savePath) { var desc = new ActionDescriptor(); var ref = new ActionReference(); ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt")); desc.putReference(charIDToTypeID("null"), ref); desc.putPath(charIDToTypeID("T "), new File(savePath)); desc.putBoolean(charIDToTypeID("Lnkd"), true); executeAction(charIDToTypeID("slct"), desc, DialogModes.NO); } // 主处理函数 function processSmartObjects() { // 检查是否有打开的文档 if (app.documents.length === 0) { alert("没有打开的文档!"); return; } var doc = app.activeDocument; var desktopPath = Folder.desktop.fsName; var linkedFilePath = desktopPath + "/LinkedSmartObject.psb"; var firstSmartObjectLayer = null; var smartObjectLayers = []; // 收集所有智能对象图层 for (var i = 0; i < doc.layers.length; i++) { var layer = doc.layers[i]; if (layer.kind === LayerKind.ARTOBJECT) { smartObjectLayers.push(layer); } } if (smartObjectLayers.length === 0) { alert("文档中没有智能对象!"); return; } // 处理第一个智能对象 - 转为链接对象并保存 firstSmartObjectLayer = smartObjectLayers[0]; saveLinkedFile(doc, firstSmartObjectLayer, linkedFilePath); // 重新链接所有智能对象到保存的文件 for (var j = 0; j < smartObjectLayers.length; j++) { var soLayer = smartObjectLayers[j]; soLayer.link(linkedFilePath); } // 嵌入所有链接的智能对象 for (var k = 0; k < smartObjectLayers.length; k++) { var embedLayer = smartObjectLayers[k]; embedLayer.embed(); } alert("处理完成!共处理了 " + smartObjectLayers.length + " 个智能对象。"); } // 执行主函数 processSmartObjects(); ``` ## 使用说明 1. 将上面的代码保存为`.jsx`文件(例如`processSmartObjects.jsx`) 2. 在Photoshop中打开包含智能对象的文档 3. 通过"文件 > 脚本 > 浏览"运行此脚本 ## 代码逻辑说明 1. 脚本首先检查是否有打开的文档和智能对象 2. 将第一个智能对象转换为链接对象并保存到桌面(文件名为LinkedSmartObject.psb) 3. 遍历文档中所有智能对象,将它们重新链接到刚保存的文件 4. 最后嵌入所有链接的智能对象 ## 注意事项 1. 脚本会将链接文件保存到桌面,文件名固定为LinkedSmartObject.psb,如有同名文件会被覆盖 2. 所有智能对象最终都会链接到同一个文件内容 3. 处理完成后,所有智能对象将被嵌入,不再保持链接状态 [2025-05-03 15:19:16 | AI写代码神器 | 802点数解答]