Photoshop Действие, чтобы заполнить изображение, чтобы сделать определенное соотношение - PullRequest
2 голосов
/ 29 ноября 2010

Я хочу сделать фотошоп (возможно, это невозможно, любые другие рекомендации по применению также будут полезны).Я хочу взять коллекцию фотографий и сделать их с определенным соотношением сторон, например: 4: 3.

Итак, у меня есть изображение шириной 150px и высотой 200px.Я хотел бы, чтобы холст изображения был шириной 267 пикселей с новой областью, заполненной определенным цветом.

Так что есть две возможности, о которых я могу подумать:

1) Действия Photoshop могли бы сделать это, но мне нужно было бы вытянуть текущую высоту, умножить на 1.333333 и затем поместить это значение в поле ширины изменения размера холста.Можно ли рассчитывать значения в действиях Photoshop?

2) В некоторых других приложениях эта функция встроена.

Любая помощь очень ценится.

Ответы [ 3 ]

6 голосов
/ 16 марта 2011

Ух ты, теперь я вижу (после написания ответа), что это было задано давно. , , Ну что ж. Этот скрипт делает свое дело.

Этот скрипт Photoshop изменит размер холста любого изображения, чтобы оно имело соотношение сторон 4: 5. Вы можете изменить применяемое соотношение сторон, изменив arWidth и arHeight. Цвет заливки будет установлен на текущий цвет фона. Вы можете создать действие, чтобы открыть файл, применить этот сценарий, а затем закрыть файл, чтобы выполнить пакетный процесс.

Завершение работы Photoshop.
Скопируйте этот javascript в новый файл с именем «Resize Canvas.jsx» в папке Presets \ Scripts в Photoshop.
Запустите Photoshop и в меню «Файл - сценарии» он должен появиться.

#target photoshop

main ();

function main ()
{
    if (app.documents.length < 1)
    {
        alert ("No document open to resize.");
        return;
    }

    // These can be changed to create images with different aspect ratios.
    var arHeight = 4;
    var arWidth = 5;

    // Apply the resize to Photoshop's active (selected) document.
    var doc = app.activeDocument;

    // Get the image size in pixels.
    var pixelWidth = new UnitValue (doc.width, doc.width.type);
    var pixelHeight = new UnitValue (doc.height, doc.height.type);
    pixelWidth.convert ('px');
    pixelHeight.convert ('px');

    // Determine the target aspect ratio and the current aspect ratio of the image.
    var targetAr = arWidth / arHeight;
    var sourceAr = pixelWidth / pixelHeight;

    // Start by setting the current dimensions.
    var resizedWidth = pixelWidth;
    var resizedHeight = pixelHeight;

    // The source image aspect ratio determines which dimension, if any, needs to be changed.
    if (sourceAr < targetAr)
        resizedWidth = (arWidth * pixelHeight) / arHeight;
    else
        resizedHeight = (arHeight * pixelWidth) / arWidth;

    // Apply the change to the image.
    doc.resizeCanvas (resizedWidth, resizedHeight, AnchorPosition.MIDDLECENTER);
}
0 голосов
/ 28 августа 2017

Имейте в виду, что принятый ответ от @ user268911 может не работать для вас, если исходное изображение имеет пиксели / дюйм, отличные от 72. Поскольку функция UnitValue.convert работает правильно только с 72 пикс / дюйм Чтобы быть уверенным, что преобразование корректно для любого значения пикселя / дюйм, установите свойство baseUnit следующим образом:

 ...
 var pixelWidth = new UnitValue (doc.width, doc.width.type);
 pixelWidth.baseUnit = UnitValue (doc.width.baseUnit, "in");
 var pixelHeight = new UnitValue (doc.height, doc.height.type);
 pixelHeight.baseUnit = UnitValue (doc.height.baseUnit, "in");
 ...

Подробнее о преобразовании см. Раздел «Преобразование значений в пикселях и процентах» Руководство по инструментам Adobe JavaScript .

0 голосов
/ 30 ноября 2010

Какие языки вы знаете? ImageMagick имеет инструменты командной строки, которые могут сделать это, но вам нужно знать язык сценариев, чтобы получить значения и вычислить новые.

Для .NET продукт моей компании, DotImage Photo , является бесплатным и может сделать это (необходимо знать C # или VB.NET)

...