@chegr
Дизайнер, очень-инди-разработчик, перфекционист

Как автоматизировать округление размеров холста в Фотошопе?

В моей работе мне часто приходится обрабатывать кучи файлов, выполняя кучи операций, все из которых прекрасно шаблонизируются. Кроме одной — округления размера типа 5000,5х1500,5mm в меньшую сторону.
Для этого я написал простенький скрипт:
app.preferences.rulerUnits = Units.MM;
app.activeDocument.resizeCanvas (Math.floor(app.activeDocument.width), Math.floor(app.activeDocument.height), AnchorPosition.TOPLEFT);

Но, к сожалению, когда один из размеров УЖЕ вполне себе круглый, скрипт иногда вычитает миллиметр — и 1500, например, превращается в 1499. Я пробовал сделать что-то вроде Math.floor(app.activeDocument.width.toFixed(2)), но, видать, я плохо знаю JS.
Что я делаю не так?
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
karabanov
@karabanov
Системный администратор
Тут не в знании JS дело, а в понимании происходящего.
Размер необходимо вычислять заранее и проверять, я полагаю, делиться ли он без остатка на 2. Если делится, то менять ничего не надо если не делится, то надо округлить.

Перед app.activeDocument.resizeCanvas надо добавить оператор if в котором проверять необходимость округления. В сам метод app.activeDocument.resizeCanvas надо подставлять переменные содержащие результат округления/неокругления, прошедшие проверку в if, а не вычислять результат на месте.

app.preferences.rulerUnits = Units.MM;
width  = app.activeDocument.width;
height = app.activeDocument.height;
// Не знаю синтаксис, пишу по наитию, но должно выглядеть как-то так
if(width % 2)  width  = Math.floor(width);
if(height % 2) height = Math.floor(height);

app.activeDocument.resizeCanvas (width, height, AnchorPosition.TOPLEFT);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Попробуйте метод Math.ceil();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы