我经常在线订购照片。但是打印服务是自动的,会将我上传的照片裁剪成 4x5 的比例。我希望能够在上传照片之前为照片添加边距(例如白色),这样照片的长宽比就是 4x5。
我需要对几张图片执行此操作,那么是否有可以使用的脚本/宏?您可以建议基于 Photoshop 的解决方案。
答案1
Photoshop 可以使用其所谓的“操作”编写脚本。它们很像宏,可以在程序中录制、编辑和播放。创建脚本后,可以手动对单个图像执行,也可以应用于文件夹中的所有图像。
Photoshop 的帮助中有大量关于它们的信息。网络上还有大量用于各种任务的免费程序,所以如果有一个可以满足您的要求或接近您的要求,我也不会感到惊讶。如果没有,您想要做的事情听起来相当简单,因此创建自己的程序可能并不难(假设您知道如何在程序中执行此操作)。或者,您可以下载一个接近或类似于您的目标的免费程序并编辑(修改)它。
更新:我找到了这个关于如何创建自己的动作的网络教程——如何:使用 Adobe Photoshop 中的操作和批处理将 10 张或更多图像裁剪为定义的大小。
答案2
答案3
我在 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