You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JavaScript在Photoshop中按序运行Contact Sheet II并修复加载问题

Photoshop Contact Sheet II脚本故障排查与修复

问题概述

尝试编写Photoshop脚本运行Contact Sheet II,但无法打开目标文件。需求如下:

  • 目标文件路径:D:/MyBook.jpg、D:/TheSun.jpg、D:/Car.jpg
  • 脚本需按字母顺序加载文件

原脚本代码:

function createContactSheet(fileNames){
var id = stringIDToTypeID( "0B71D221-F8CE-11d2-B21B-0008C75B322C" );
    var desc1 = new ActionDescriptor();
    var idCSIISettings = stringIDToTypeID( "CSIISettings" );
    desc1.putString( idCSIISettings, '<ContactSheetIISettings>'+
  '<source imageSource="Files" selectFile="'+ fileNames +'"/>'+
  '<document units="pixels" width="910" height="25000" resolution="72" resUnits="pixels/inch" mode="RGB Color" bitDepth="8-bit" colorProfile="sRGB IEC61966-2.1" flattenLayers="true"/>'+
  '<thumbnail place="across first" cols="1" rows="100" bestFit="false" useAutospacing="true" horz="1 px" vert="1 px"/>'+
  '<caption enabled="false">'+
  '<font name="Arial" size="12"/>'+
  '</caption>'+
'</ContactSheetIISettings>' );
    var idMsge = charIDToTypeID( "Msge" );
    desc1.putString( idMsge, "Settings for Contact Sheet II" );
executeAction( id, desc1, DialogModes.NO );
}

var fileNames = new File ("D:/HardSub2SRT/Pic of Subs/J2testJva/0001.jpg","D:/MyBook.jpg","D:/TheSun.jpg","D:/Car.jpg");
$.setenv("NoUI",false);
createContactSheet(fileNames);
$.setenv("NoUI","");

问题分析

  1. File对象初始化错误:new File()仅支持单个路径参数,无法直接传入多个文件路径,导致fileNames变量无法正确指向目标文件集合。
  2. XML参数格式错误:Contact Sheet II的设置XML中,selectFile属性需要竖线分隔的文件路径字符串,而非直接传入File对象。
  3. 未按需求过滤与排序:原代码包含额外的0001.jpg,且未对目标文件执行字母排序操作。

修复后的脚本代码

function createContactSheet(filePathStr){
    var id = stringIDToTypeID( "0B71D221-F8CE-11d2-B21B-0008C75B322C" );
    var desc1 = new ActionDescriptor();
    var idCSIISettings = stringIDToTypeID( "CSIISettings" );
    desc1.putString( idCSIISettings, '<ContactSheetIISettings>'+
        '<source imageSource="Files" selectFile="'+ filePathStr +'"/>'+
        '<document units="pixels" width="910" height="25000" resolution="72" resUnits="pixels/inch" mode="RGB Color" bitDepth="8-bit" colorProfile="sRGB IEC61966-2.1" flattenLayers="true"/>'+
        '<thumbnail place="across first" cols="1" rows="100" bestFit="false" useAutospacing="true" horz="1 px" vert="1 px"/>'+
        '<caption enabled="false">'+
        '<font name="Arial" size="12"/>'+
        '</caption>'+
    '</ContactSheetIISettings>' );
    var idMsge = charIDToTypeID( "Msge" );
    desc1.putString( idMsge, "Settings for Contact Sheet II" );
    executeAction( id, desc1, DialogModes.NO );
}

// 定义目标文件路径数组
var targetFiles = [
    "D:/MyBook.jpg",
    "D:/TheSun.jpg",
    "D:/Car.jpg"
];

// 按字母顺序排序数组
targetFiles.sort();

// 转换为竖线分隔的字符串,适配XML参数要求
var filePathString = targetFiles.join("|");

$.setenv("NoUI", false);
createContactSheet(filePathString);
$.setenv("NoUI", "");

修复说明

  • 正确管理文件路径:用数组存储目标文件路径,避免new File()的参数错误。
  • 实现字母排序:调用数组sort()方法完成自然排序,满足需求。
  • 适配参数格式:将数组转换为竖线分隔的字符串,符合Contact Sheet II的XML参数规范。

内容的提问来源于stack exchange,提问作者Sherlock_Holmes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:15:29