Photoshop Javascript API设置为毫米,但是使用像素代替

时间:2018-12-15 21:31:13

标签: javascript photoshop photoshop-script

我在做什么

使用Adobe Photoshop CC 2018脚本引擎的javascript API:

app.preferences.rulerUnits = Units.MM;
app.preferences.typeUnits = TypeUnits.MM;
app.activeDocument.selection.select([
    [0,0],
    [0, UnitValue(150, "mm")],
    [UnitValue(150, "mm"), UnitValue(150, "mm")],
    [UnitValue(150, "mm"), 0]
]);

我期望发生什么?

Photoshop在左上方放置一个15×15厘米的选择。

实际上发生了什么?

Photoshop会创建12.7×12.7个像素?的位置,我什至不确定确切位置。

image

该文档的大小为29.7×29.7厘米,因此预计该选择将占据画板的一半。而且,“ 行进蚂蚁”甚至都没有设置在画板的左上角。

我阅读了the referrence的大部分内容,并且尝试了很多有关Google的内容,但结果却令人误解

UPDATE 可能根本不是以像素为单位,因为UnitValue(150, 'mm').as('px')输出的是425.196850393701而不是我认为是像素值的12.7

根据{{​​3}},

UPDATE 尝试将PPI设置为300以匹配文档的PPI,但行为却相同。

var startUnit=UnitValue(150, "mm");
startUnit.baseValue = UnitValue(1 / 300, "in");

1 个答案:

答案 0 :(得分:0)

Photoshop喜欢使用像素,使用英寸,毫米和厘米只是为了给我们人类带来方便。试试:

var myDocument = app.activeDocument;
app.preferences.rulerUnits = Units.MM;
var myMM = Number(myDocument.width);
app.preferences.rulerUnits = Units.PIXELS;
var myPixels = Number(myDocument.width);

myDocument.selection.select([
    [0,0],
    [0, 150*myPixels/myMM],
    [150*myPixels/myMM, 150*myPixels/myMM],
    [150*myPixels/myMM, 0]
]);

app.preferences.rulerUnits = Units.MM;

其中myMM是文档的宽度,单位为mm,myPixels是文档的宽度,单位是像素。