Действие Photoshop, чтобы заполнить изображение, чтобы сделать определенное соотношение

StackOverflow https://stackoverflow.com/questions/4307691

Вопрос

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

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

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

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

2) Некоторые другие приложения имеют эту функцию встроенной.

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

Это было полезно?

Решение

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

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

Выключение фотошопа.
Скопируйте этот JavaScript в новый файл с именем «Изменить размер Canvas.jsx» в папке Photoshop's Presets Scripts.
Запустите 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);
}

Другие советы

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

Для .NET, товар моей компании, Dotimage photo., бесплатно и может сделать это (нужно знать C # или vb.net)

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

 ...
 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top