Bilder automatisch mit leeren Rändern versehen, um ein Seitenverhältnis von 4x5 zu erhalten?

1742
Bojack

Ich bestelle häufig Abzüge online. Der Druckservice ist jedoch automatisiert und schneidet die Bilder, die ich hochlade, auf ein Verhältnis von 4x5 aus. Ich möchte in der Lage sein, den Bildern Ränder (z. B. Weiß) hinzuzufügen, BEVOR ich sie hochlade, sodass sie ein Seitenverhältnis von 4x5 haben.

Ich muss dies für mehrere Bilder machen. Gibt es ein Skript / ein Makro, das ich verwenden kann? Sie können eine auf Photoshop basierende Lösung vorschlagen.

0
Um welche Bilddateiformate handelt es sich? martineau vor 13 Jahren 0

3 Antworten auf die Frage

2
martineau

Photoshop kann mit den so genannten Aktionen Skript erstellt werden. Sie ähneln Makros und können innerhalb des Programms aufgezeichnet, bearbeitet und wiedergegeben werden. Nachdem Sie eines erstellt haben, kann es manuell für einzelne Bilder ausgeführt oder auf alle Bilder in einem Ordner angewendet werden.

In der Photoshop-Hilfe finden Sie ausführliche Informationen dazu. Es gibt auch eine große Anzahl von kostenlosen Funktionen für alle Arten von Aufgaben im Web. Es würde mich also nicht überraschen, wenn es eine gab, die tut, was Sie wollen ... oder in der Nähe davon. Wenn nicht, klingt das, was Sie gerne machen würden, ziemlich einfach. Daher wäre es wahrscheinlich nicht so schwierig, Ihre eigenen zu erstellen (vorausgesetzt, Sie wissen, wie Sie dies im Programm tun sollen). Alternativ können Sie ein kostenloses Programm herunterladen, das dem Ziel nahe kommt oder diesem ähnelt, und es bearbeiten (ändern).

Update: Ich habe dieses Web-Tutorial zum Erstellen eigener Aktionen gefunden. Vorgehensweise : Zuschneiden von 10 oder mehr Bildern auf eine definierte Größe mithilfe von Aktionen und Stapelverarbeitung in Adobe Photoshop .

Um dies etwas näher zu erläutern: Da das Endergebnis physische Ausdrucke ist, können Sie alle Landschaftsfotos (auch horizontal genannt) aufnehmen, sie um 90 Grad drehen und dann als temporäre Kopie speichern. Auf diese Weise sind alle Fotos, die Sie an den Dienst senden, in einer Ausrichtung. Wenn Ihre Fotos am Anfang nicht 4x5 (oder 8x10) sind, können Sie alle Fotos aufnehmen und eine Transformation auf alle anwenden, um sie alle 5 Zoll breit zu machen. Dann werden sie nicht automatisch zugeschnitten. Sobald Sie Ihren Workflow herausgefunden haben, können die Aktionen wie von Martineau vorgeschlagen automatisiert werden. horatio vor 13 Jahren 0
1
Dennis Williamson

Sie können dies mit einem Befehlszeilentool tun, das Bestandteil von ImageMagick ist . Es ist für Unix / Linux, OS X und Windows verfügbar.

Zum Beispiel:

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

Fügt dem Bild einen 10-Pixel-Rahmen hinzu. Um das Seitenverhältnis auffüllen zu können, müssen die Dinge etwas komplexer sein. Hier ist ein Bash-Skript, das ImageMagick verwendet, um das zu tun, was Sie möchten: Aspectpad .

0
Bojack

Ich habe in Matlab ein Skript geschrieben, das das Problem löst: Es liest alle Bilder im Verzeichnis und fügt einen schwarzen Rand hinzu, um das gewünschte Seitenverhältnis zu erreichen.

% 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