Я часто заказываю печать онлайн. Однако сервис печати автоматизирован и обрезки картинки, которые я загружаю к 4x5 отношение. Я хотел бы смочь добавить поля (например, белый) к изображениям, ПРЕЖДЕ ЧЕМ я загружу их, так, чтобы они были в 4x5 соотношение сторон.
Я должен сделать это для нескольких изображений, так есть ли сценарий / макрос, который я могу использовать? Можно предложить решение на основе Photoshop.
Photoshop может быть задан сценарием с помощью то, что он называет Действиями. Они много похожи на макросы и могут быть зарегистрированы, отредактированы и играли все в рамках программы. После того как Вы создали один, это может выполняться вручную на отдельных изображениях или относиться все изображения в папке.
Существует обширная информация о них в Справке Photoshop. Существует также большое количество свободных в сети для всех видов задач, таким образом, меня не удивило бы, если бы был тот, который делает то, что Вы хотите... или близко к нему. В противном случае, что требуется сделать довольно легкие звуки, таким образом, вероятно, не случится так, что трудно для создания собственного (принятие Вас знают, как пойти о выполнении его в программе). С другой стороны, Вы могли загрузить свободный, это близко или подобно Вашей цели, и редактирование (изменяют) его.
Обновление: Я нашел это веб-учебное руководство при создании Ваших собственных действий - Как к: Обрежьте 10 или больше изображений к определенному размеру с помощью действий и пакетной обработки в Adobe Photoshop.
Можно сделать это использование инструмента командной строки, это - часть ImageMagick. Это доступно для Unix/Linux, OS X и Windows.
Например:
convert *.jpg -bordercolor white -border +10+10 %t-4x5.%e
Добавляет граница на 10 пикселей вокруг изображения. Чтобы сделать дополнение соотношения сторон, вещи должны быть вполне немного более сложными. Вот сценарий Bash, который использует ImageMagick, чтобы сделать то, что Вы хотите: aspectpad.
Я записал сценарий в 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