Photoshop Javascript API установлен на миллиметры, но вместо этого использует пиксели - PullRequest
0 голосов
/ 16 декабря 2018

Что я делаю

Использование javascript API механизма сценариев Adobe Photoshop CC 2018:

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 см, поэтому выделение, как ожидается, займет половину монтажной области.Более того, « походные муравьи » даже не установлены в верхнем левом углу артборда.

Я прочитал большую часть ссылки plus, пытаясь найтимного, но результаты, которые я получаю, вводят в заблуждение

ОБНОВЛЕНИЕ может не быть в пикселях в конце концов, потому что UnitValue(150, 'mm').as('px') выводит 425.196850393701, а не 12.7, который я считалзначение в пикселях.

ОБНОВЛЕНИЕ попытался установить PPI равным 300, чтобы соответствовать документу, в соответствии с этим ответом , но получил то же поведение.

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

1 Ответ

0 голосов
/ 16 декабря 2018

Фотошоп любит работать с пикселями, использование дюймов, миллиметров и сантиметров только для удобства нас, людей.Попробуйте:

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 - ширина документа в мм, а myPixels - ширина документа в пикселях.

...