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

0

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

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

n / a
quelle
Um welche Bilddateiformate handelt es sich?
Martineau

Antworten:

2

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

Ausführliche Informationen dazu finden Sie in der Photoshop-Hilfe. Es gibt auch eine große Anzahl von kostenlosen im Internet für alle Arten von Aufgaben. Es würde mich also nicht überraschen, wenn es eine gibt, die das tut, was Sie wollen ... oder in der Nähe davon. Wenn nicht, klingt das, was Sie gerne tun würden, ziemlich einfach. Daher wäre es wahrscheinlich nicht so schwer, ein eigenes zu erstellen (vorausgesetzt, Sie wissen, wie man es im Programm macht). Alternativ können Sie eine kostenlose Version herunterladen, die Ihrem Ziel nahe kommt oder diesem ähnelt, und sie bearbeiten (ändern).

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

Martineau
quelle
Um dies ein wenig zu erweitern: Da das Endergebnis physische Ausdrucke sind, besteht eine Option darin, alle Landschaftsfotos (auch als horizontale Fotos bezeichnet) aufzunehmen, um 90 Grad zu drehen und dann als temporäre Kopie zu speichern. Auf diese Weise werden alle Fotos, die Sie an den Dienst senden, in einer Ausrichtung angezeigt. Wenn Ihre Fotos zu Beginn nicht 4x5 (oder 8x10) groß sind, können Sie alle Fotos aufnehmen und sie mit einer Transformation alle 5 Zoll breit machen. Dann werden sie von der automatischen Zuschneidung nicht zugeschnitten. Sobald Sie Ihren Workflow herausgefunden haben, können die Aktionen wie von Martineau vorgeschlagen automatisiert werden.
Horatio
1

Sie können dies mit einem Befehlszeilentool tun, das Teil 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-Rand hinzu. Um das Seitenverhältnis aufzufüllen, müssen die Dinge etwas komplexer sein. Hier ist ein Bash-Skript, das ImageMagick verwendet, um das zu tun, was Sie wollen: aspectpad .

Dennis Williamson
quelle
0

In Matlab habe ich 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 erzielen.

% 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
n / a
quelle