Вам нужно массово обработать фотографии в Photoshop?

Как написать скрипт для увеличения фотографии внутри изображения, оставив пространство вокруг увеличенной части, используя только видимую часть картинки и определенную ширину полотна? Я пробовал найти готовые решения, но безуспешно. Буду благодарен за помощь.
  • 15 сентября 2023 г. 8:27
Ответы на вопрос 1
Да, можно написать скрипт на языке JavaScript для Photoshop, который будет выполнять такую обработку фотографий. 

Вот пример такого скрипта:

```javascript
// Указываем нужные значения: 
var increasePercentage = 200; // процент увеличения
var canvasWidth = 800; // ширина полотна

// Функция, выполняющая масштабирование и обработку изображения
function processImage(doc, layer) {
  // Проверяем, есть ли открытый документ и активный слой
  if (!doc || !layer) {
    return;
  }
  
  // Устанавливаем единицы измерения в пикселях
  app.preferences.rulerUnits = Units.PIXELS;
  
  // Сохраняем начальные значения ширины и высоты слоя
  var startWidth = layer.bounds[2].value;
  var startHeight = layer.bounds[3].value;
  
  // Увеличиваем изображение
  layer.resize(increasePercentage, increasePercentage, AnchorPosition.MIDDLECENTER);
  
  // Вычисляем новые размеры слоя после увеличения
  var newWidth = layer.bounds[2].value;
  var newHeight = layer.bounds[3].value;
  
  // Вычисляем координаты слоя, чтобы оставить пространство вокруг увеличенной части
  var x = (canvasWidth - newWidth) / 2;
  var y = (canvasWidth - newHeight) / 2;
  
  // Создаем новый документ с нужной шириной полотна
  var newDoc = app.documents.add(canvasWidth, canvasWidth, doc.resolution, "Processed Image", NewDocumentMode.RGB, DocumentFill.TRANSPARENT);
  
  // Копируем увеличенный слой в новый документ с нужными координатами
  layer.copy();
  newDoc.paste();
  
  // Закрываем оригинальный документ и сохраняем изменения в новом документе
  doc.close(SaveOptions.DONOTSAVECHANGES);
  newDoc.saveAs(new File("~/Desktop/processed_image.png"), new PNGSaveOptions());
  newDoc.close(SaveOptions.SAVECHANGES);
}

// Основная функция, выполняющая обработку всех открытых документов
function main() {
  // Проверяем, есть ли открытые документы
  if (app.documents.length === 0) {
    alert("Нет открытых документов!");
    return;
  }
  
  // Обрабатываем каждый открытый документ
  for (var i = 0; i < app.documents.length; i++) {
    var doc = app.documents[i];
    var layer = doc.activeLayer;
    
    // Вызываем функцию обработки изображения
    processImage(doc, layer);
  }
}

// Запускаем основную функцию
main();
```

В этом скрипте переменная `increasePercentage` задает процент увеличения изображения. Здесь она равна 200, то есть изображение будет увеличено вдвое. Переменная `canvasWidth` задает ширину полотна, на котором будет размещено увеличенное изображение. В данном примере она равна 800 пикселей.

Скрипт обрабатывает все открытые документы в Photoshop. Он увеличивает активный слой, вычисляет новые размеры слоя и координаты, чтобы оставить пространство вокруг увеличенной части. Затем он создает новый документ с нужной шириной полотна, копирует увеличенный слой и сохраняет результат в файл processed_image.png на рабочем столе.

Чтобы использовать этот скрипт, скопируйте его в текстовый редактор и сохраните с расширением .jsx (например, "process_photos.jsx
Похожие вопросы