目前我正在编写一个脚本,其目的是在新图层上导入任意大小和DPI的图像,应用图层蒙版,并将其缩放以填充图像(例如,如果导入的图像在横向方向,高度将缩放,直到它等于文档高度)。不幸的是,Photoshop将图像置于看似随机的缩放比例中。使用scriptlistener,如果我放置一个图像,并将宽度和高度的百分比缩放比例(文件下方顶部的百分比,编辑,图像等...功能区)更改为100%,我得到:< / p>
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 { {1}},但我不明白为什么它是108.843537而不是100,就像它应该的那样。
有没有办法以一致的方式设置photoshop?或者至少,是否有可能将所有放置的图像放置在100%而不是幕后发生的任何事情导致代码数字变得奇怪?
最终脚本需要能够处理任何合理尺寸和DPI的图像,因为我可以找到文档DPI和放置图像之间的比例以正确缩放它们。
提前致谢!!
答案 0 :(得分:0)
我找到了解决方案!事实证明,您实际上可以禁用Photoshop在首选项菜单中缩放的功能,从而消除了place命令的任意性质。一切都按预期工作。 this thread on the adobe forums的重大升级,因为它解决了我完全遇到的问题。