Автоматически добавьте пустые поля к изображениям для получения 4x5 соотношение сторон?

Я часто заказываю печать онлайн. Однако сервис печати автоматизирован и обрезки картинки, которые я загружаю к 4x5 отношение. Я хотел бы смочь добавить поля (например, белый) к изображениям, ПРЕЖДЕ ЧЕМ я загружу их, так, чтобы они были в 4x5 соотношение сторон.

Я должен сделать это для нескольких изображений, так есть ли сценарий / макрос, который я могу использовать? Можно предложить решение на основе Photoshop.

0
задан 21.07.2011, 09:43

3 ответа

Photoshop может быть задан сценарием с помощью то, что он называет Действиями. Они много похожи на макросы и могут быть зарегистрированы, отредактированы и играли все в рамках программы. После того как Вы создали один, это может выполняться вручную на отдельных изображениях или относиться все изображения в папке.

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

Обновление: Я нашел это веб-учебное руководство при создании Ваших собственных действий - Как к: Обрежьте 10 или больше изображений к определенному размеру с помощью действий и пакетной обработки в Adobe Photoshop.

2
ответ дан 24.11.2019, 04:35

Можно сделать это использование инструмента командной строки, это - часть ImageMagick. Это доступно для Unix/Linux, OS X и Windows.

Например:

convert *.jpg -bordercolor white -border +10+10 %t-4x5.%e

Добавляет граница на 10 пикселей вокруг изображения. Чтобы сделать дополнение соотношения сторон, вещи должны быть вполне немного более сложными. Вот сценарий Bash, который использует ImageMagick, чтобы сделать то, что Вы хотите: aspectpad.

1
ответ дан 24.11.2019, 04:35

Я записал сценарий в Matlab, который решает проблему: Это читает все изображения в каталоге и добавляет черное поле для достижения желаемого соотношения сторон.

% Margins

% SPECIFY RATIO
RATIO_HEIGHT = 10;
RATIO_WIDTH = 8;

% READ FILES
files = dir('*.jpg');

% START
clc
for f=1:size(files)
    % READ FILE
    IMG = imread(files(f).name);
    [h w d] = size(IMG);

    % CALCULATE RATIO
    ratio = w/h;

    % PRINT FILENAME
    fprintf('\n\n-------------------------------------');
    fprintf('\n# PROCESSING FILE: \t%s', files(f).name);

    % PRINT ORIENTATION
    if(h > w)
        orientation = 1;
        fprintf('\nPORTRAIT');
    else
        orientation = 2;
        fprintf('\nLANDSCAPE');
    end

    % PRINT DIMENSIONS
    fprintf('\t|\t%i x %i', h, w);

    % CHECK RATIO?
    if(h/w == RATIO_HEIGHT/RATIO_WIDTH)
        fprintf('\n > Correct aspect ratio.');
        NIMG = IMG;        
    else
        fprintf('\n! BAD aspect ratio : %f', h/w);

        % CALCULATE NEW DIMENSIONS
        if(ratio < RATIO_WIDTH/RATIO_HEIGHT)
            ch = h;
            cw = round(RATIO_WIDTH/RATIO_HEIGHT*ch);
        else
            cw = w;
            ch = round(RATIO_HEIGHT/RATIO_WIDTH*cw);
        end

        % PRINT NEW DIMENSIONS
        fprintf('\nNEW DIMENSIONS: \t%i x %i | ADDED: %i x %i', ch, cw, ch-h, cw-w);

        % CREATE NEW IMAGE
        NIMG = uint8(zeros(ch,cw,d));

        % COPY
        for k=1:d
            for i=1:h
                for j=1:w
                    NIMG(i,j,k) = IMG(i,j,k);
                end
            end
        end
    end

    % WRITE
    imwrite(NIMG, ['modified\' files(f).name '.png'], 'png');
end
0
ответ дан 24.11.2019, 04:35

Теги

Похожие вопросы