Photoshop JavaScript 图像放置不一致
Photoshop JavaScript images do not place consistently
目前我正在编写一个脚本,目的是在新图层上导入任意大小和 DPI 的图像,应用图层蒙版,并将其缩放以填充图像(例如,如果导入的图像在横向方向,高度将被缩放,直到它等于文档高度)。不幸的是,Photoshop 以看似随机的比例放置图像。使用 scriptlistener,如果我放置一个图像,并将宽度和高度的百分比缩放比例(文件、编辑、图像等下方顶部的百分比向上……功能区)更改为 100%,我得到这个:
var idPlc = charIDToTypeID( "Plc " );
var desc144 = new ActionDescriptor();
var idIdnt = charIDToTypeID( "Idnt" );
desc144.putInteger( idIdnt, 44 );
var idnull = charIDToTypeID( "null" );
desc144.putPath( idnull, new File( "C:\Users\Cameron Anderson\Desktop\Junk\2hu chibis\Wallpapers\Exports\1920x1080\New folder\Alice.png" ) );
var idFTcs = charIDToTypeID( "FTcs" );
var idQCSt = charIDToTypeID( "QCSt" );
var idQcsa = charIDToTypeID( "Qcsa" );
desc144.putEnumerated( idFTcs, idQCSt, idQcsa );
var idOfst = charIDToTypeID( "Ofst" );
var desc145 = new ActionDescriptor();
var idHrzn = charIDToTypeID( "Hrzn" );
var idPxl = charIDToTypeID( "#Pxl" );
desc145.putUnitDouble( idHrzn, idPxl, -0.000000 );
var idVrtc = charIDToTypeID( "Vrtc" );
var idPxl = charIDToTypeID( "#Pxl" );
desc145.putUnitDouble( idVrtc, idPxl, -0.000000 );
var idOfst = charIDToTypeID( "Ofst" );
desc144.putObject( idOfst, idOfst, desc145 );
var idWdth = charIDToTypeID( "Wdth" );
var idPrc = charIDToTypeID( "#Prc" );
desc144.putUnitDouble( idWdth, idPrc, 108.843537 );
var idHght = charIDToTypeID( "Hght" );
var idPrc = charIDToTypeID( "#Prc" );
desc144.putUnitDouble( idHght, idPrc, 108.853411 );
var idLnkd = charIDToTypeID( "Lnkd" );
desc144.putBoolean( idLnkd, true );
executeAction( idPlc, desc144, DialogModes.NO );
根据我目前对脚本侦听器的了解,我相信类似于desc144.putUnitDouble( idWdth, idPrc, 108.843537 );
的两行描述了百分比缩放,假设上面的行他们给出了 TypeID "#Prc"
,但我不明白为什么它是 108.843537 而不是 100,就像它应该的那样。
有什么方法可以将 photoshop 设置为以一致的方式放置?或者至少,是否有可能将所有放置的图像放置在 100% 而不是幕后发生的任何事情导致代码数字变得奇怪?
最终脚本需要能够处理任何合理尺寸和 DPI 的图像,因为我可以找到文档 DPI 和放置的图像之间的比率以正确缩放它们。
提前致谢!!
我找到解决办法了!事实证明,您实际上可以在首选项菜单中禁用 Photoshop 缩放位置的功能,从而消除放置命令的任意性。一切都按预期工作。感谢 this thread on the adobe forums,因为它完全解决了我遇到的问题。
目前我正在编写一个脚本,目的是在新图层上导入任意大小和 DPI 的图像,应用图层蒙版,并将其缩放以填充图像(例如,如果导入的图像在横向方向,高度将被缩放,直到它等于文档高度)。不幸的是,Photoshop 以看似随机的比例放置图像。使用 scriptlistener,如果我放置一个图像,并将宽度和高度的百分比缩放比例(文件、编辑、图像等下方顶部的百分比向上……功能区)更改为 100%,我得到这个:
var idPlc = charIDToTypeID( "Plc " );
var desc144 = new ActionDescriptor();
var idIdnt = charIDToTypeID( "Idnt" );
desc144.putInteger( idIdnt, 44 );
var idnull = charIDToTypeID( "null" );
desc144.putPath( idnull, new File( "C:\Users\Cameron Anderson\Desktop\Junk\2hu chibis\Wallpapers\Exports\1920x1080\New folder\Alice.png" ) );
var idFTcs = charIDToTypeID( "FTcs" );
var idQCSt = charIDToTypeID( "QCSt" );
var idQcsa = charIDToTypeID( "Qcsa" );
desc144.putEnumerated( idFTcs, idQCSt, idQcsa );
var idOfst = charIDToTypeID( "Ofst" );
var desc145 = new ActionDescriptor();
var idHrzn = charIDToTypeID( "Hrzn" );
var idPxl = charIDToTypeID( "#Pxl" );
desc145.putUnitDouble( idHrzn, idPxl, -0.000000 );
var idVrtc = charIDToTypeID( "Vrtc" );
var idPxl = charIDToTypeID( "#Pxl" );
desc145.putUnitDouble( idVrtc, idPxl, -0.000000 );
var idOfst = charIDToTypeID( "Ofst" );
desc144.putObject( idOfst, idOfst, desc145 );
var idWdth = charIDToTypeID( "Wdth" );
var idPrc = charIDToTypeID( "#Prc" );
desc144.putUnitDouble( idWdth, idPrc, 108.843537 );
var idHght = charIDToTypeID( "Hght" );
var idPrc = charIDToTypeID( "#Prc" );
desc144.putUnitDouble( idHght, idPrc, 108.853411 );
var idLnkd = charIDToTypeID( "Lnkd" );
desc144.putBoolean( idLnkd, true );
executeAction( idPlc, desc144, DialogModes.NO );
根据我目前对脚本侦听器的了解,我相信类似于desc144.putUnitDouble( idWdth, idPrc, 108.843537 );
的两行描述了百分比缩放,假设上面的行他们给出了 TypeID "#Prc"
,但我不明白为什么它是 108.843537 而不是 100,就像它应该的那样。
有什么方法可以将 photoshop 设置为以一致的方式放置?或者至少,是否有可能将所有放置的图像放置在 100% 而不是幕后发生的任何事情导致代码数字变得奇怪?
最终脚本需要能够处理任何合理尺寸和 DPI 的图像,因为我可以找到文档 DPI 和放置的图像之间的比率以正确缩放它们。
提前致谢!!
我找到解决办法了!事实证明,您实际上可以在首选项菜单中禁用 Photoshop 缩放位置的功能,从而消除放置命令的任意性。一切都按预期工作。感谢 this thread on the adobe forums,因为它完全解决了我遇到的问题。