【问题标题】:Photoshop JavaScript images do not place consistentlyPhotoshop JavaScript 图像放置不一致
【发布时间】:2016-05-21 17:17:34
【问题描述】:

目前我正在编写一个脚本,其目的是在新图层上导入任意大小和 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 和放置的图像之间的比率来正确缩放它们。

提前致谢!!

【问题讨论】:

  • 我的猜测是,如果您的图像具有不同的 DPI,那么您还需要考虑到这一点来缩放它们。您是否尝试过上面的脚本,将 108 更改为 100 并查看会发生什么?不幸的是,我不是专家,但我发现 Adob​​e JS 参考(过去很少使用)对于理解这段代码的含义非常有用。希望对您有所帮助:adobe.com/content/dam/Adobe/en/products/photoshop/pdfs/cs6/…
  • 是的,我最初尝试将其设置为 100,因为我认为这是 100%,因此我认为 1920x1080 图像的宽度太短了 160 像素。 Adobe 参考指南似乎非常有用,但是您可以使用脚本执行的大部分操作(例如椭圆选择)都无法在其中找到,而脚本侦听器在这方面更有用看待。不过,事件 ID 代码非常有用。
  • 这些是我使用的比率,考虑了 DPI 的差异var thanksPhotoshop = (objResolution/doc.resolution) * 100; scaleImported(thanksPhotoshop); var scalePercentage = (y / objHeight) * 100; scaleImported(scalePercentage); 编辑:显然输入不做换行符,而是提交评论(和“编辑”中的一封信)跨度>

标签: javascript scale photoshop photoshop-script


【解决方案1】:

我找到了解决办法!事实证明,您实际上可以在首选项菜单中禁用 Photoshop 在位置上缩放的功能,从而消除放置命令的任意性质。一切都按预期工作。向this thread on the adobe forums 致敬,因为它完全解决了我遇到的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2012-03-04
    • 2012-02-21
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    相关资源
    最近更新 更多