Stapelverarbeitung von Bildern, um proportional zu sein

Ich habe eine Reihe kleiner Bilder, alle auf weißem Hintergrund.

Einige von ihnen sind quadratisch proportioniert, andere sind rechteckig proportioniert; entweder vertikal oder horizontal. Ich möchte alle Bilder quadratisch machen, die Größe spielt keine Rolle, aber die Proportion.

Gibt es eine schnelle Möglichkeit, alle Bilder stapelweise zu verarbeiten, sodass rechteckige Bilder in quadratische Bilder umgewandelt werden, während sie zentriert bleiben und auch bereits quadratische Bilder ignoriert werden?

Ich würde ein Makro oder Skript ausprobieren, aber ich weiß nicht, wie ich so etwas codieren soll: "Machen Sie das Bild und vergrößern Sie es an seiner größten Seite".

Ich arbeite mit Photoshop, kann die Bilder aber bei Bedarf in jedes Online-Tool hochladen.

Gibt es einen Grund, warum Sie die Bilder nicht zuerst trennen konnten? Wenn Sie das tun können, können Sie einfach die integrierte Stapelverarbeitungsfunktion in Photoshop verwenden.
@Ovaryraptor Ich könnte, aber es wird einige Zeit dauern, angenommen, ich könnte schnell quadratische von nicht quadratischen Bildern sortieren. Wie verwende ich den Prozessor, um ein rechteckiges Bild quadratisch zu machen?
Bitte beachten Sie meine andere Antwort. graphicdesign.stackexchange.com/a/97205/43400
Wenn eine der Anforderungen "während sie zentriert bleiben" lautet, befürchte ich, dass die Automatisierung nicht funktioniert. Wenn die Bilder alle an der gleichen Position wären, würde es funktionieren. Photoshop weiß nichts über Objekte in einem Foto - es gibt keine Möglichkeit für die Software, automatisch zu finden, wo sich ein Objekt befindet.

Antworten (1)

Auf den Batch-Prozess gehe ich nicht näher ein. Es sollte ausreichen zu wissen, dass Sie ein Skript ausführen können, File > Automate > Batch...indem Sie zuerst eine Photoshop-Aktion ausführen, in der Sie eine Skriptdatei öffnen: File > Scripts > Browse.... Natürlich können Sie innerhalb derselben Aktion auch mehr Dinge tun.

Ich bin mir nicht ganz sicher, ob ich verstehe, was Sie wollen, also poste ich 2 Skripte. Erstellen Sie eine neue .jsxDatei, in die Sie eines dieser Skripte einfügen, und verwenden Sie es in der Aktion.

Beide arbeiten mit Hoch- und Querformatbildern.

Bild zu Quadrat - script.jsx verkleinern:

Geben Sie hier die Bildbeschreibung ein

var rUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;

var doc = app.activeDocument;
var docWidth = doc.width;
var docHeight = doc.height;
var newSize = docWidth > docHeight ? docHeight : docWidth;

app.activeDocument.resizeCanvas( newSize, newSize, AnchorPosition.MIDDLECENTER );

app.preferences.rulerUnits = rUnits;

Bild zu Quadrat - Grow script.jsx:

Geben Sie hier die Bildbeschreibung ein

Die erweiterte Hintergrundfarbe ergibt sich aus der in der Symbolleiste eingestellten Hintergrundfarbe.

var rUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;

var doc = app.activeDocument;
var docWidth = doc.width;
var docHeight = doc.height;
var newSize = docWidth > docHeight ? docWidth : docHeight;

app.activeDocument.resizeCanvas( newSize, newSize, AnchorPosition.MIDDLECENTER );

app.preferences.rulerUnits = rUnits;
Erstaunlich, genau das, wonach ich gesucht habe (2. Skript), mit dem einzigen Unterschied, dass unsere Bilder immer auf weißem Hintergrund sind. Wenn ich also Weiß in der Symbolleiste einstelle, kann ich den Stapel ohne Probleme ausführen, oder?
@S.Redrum, ja. Sie können das Skript zunächst an einem einzelnen Bild testen.
Es funktioniert wie ein Zauber, nur ein Stopp, auf den ich gestoßen bin, war auf einem Bild, wo es darum gebeten hat, das Qualitätsverhältnis zum Speichern zu bestätigen. Kann ich etwas hinzufügen, um dem Skript mitzuteilen, dass es das Bild auch ohne Aufforderung speichern soll?
@S.Redrum uh oh ... Sollte möglich sein, aber ich habe gerade keine Antwort darauf. Ich hätte dies an mehreren Bildern testen sollen, habe es aber nicht getan. Werde das prüfen....
@S.Redrum, oh warte. Jetzt, wo ich wirklich gelesen habe, was Sie gesagt haben, ist mir klar, dass es nicht das Skript war, das diesen Dialog verursacht hat. Was ich nicht ganz verstehe ist warum. Hier ist ein Beispiel dafür, wie diese Dinge passieren können. Dies sind typischerweise Inkonsistenzen, wie zum Beispiel: Wenn Sie eine Aktion ausführen, bei der Sie close a documentund dieses Dokument, das Sie zum Ausführen der Aktion verwenden, gespeichert wurden, wird es geschlossen, ohne dass Ihnen jemals ein Dialogfeld angezeigt wird. Dann ... wurde eines der Bilder, auf denen Sie die Aktion ausführen, nach Änderungen nicht gespeichert. Wenn Ihre Aktion also versucht, es zu schließen, werden Sie gefragt, ob Sie das Dokument speichern möchten oder nicht.
da das Dialogverhalten nicht in der Aktion gespeichert wurde. Sie können dies sicherstellen, indem Sie die Aktion mit einem nicht gespeicherten Dokument aufzeichnen. Auf diese Weise funktioniert es sowohl für gespeicherte als auch für nicht gespeicherte Dokumente. Der Grund, warum ich mir nicht sicher bin, was speziell mit Ihrer Aktion los ist, ist, dass ich mir keine Situation vorstellen kann, in der es plötzlich entscheiden würde, dass die Qualitätseinstellung nicht in der Aktion gespeichert wird ... Ich habe das Gefühl, dass es sollte sei immer. Das Speichern des Bildes kann zwar in das Skript eingefügt werden, eigentlich könnte der ganze Vorgang auch mit einem Skript abgewickelt werden, ist aber ziemlich umständlich.
Es fordert zur Bestätigung der JPEG-Qualität für jede Datei auf: '(Ich habe ähnliche Beiträge gelesen, in denen ein Häkchen bei "Speichern unter deaktivieren" funktioniert hat, das werde ich versuchen.
Wie speicherst du die Bilder? Verwenden Sie die Destination: Save and Closeim Batch-Dialog? Ich bin mir ziemlich sicher, dass das dein Problem ist. Ich würde sagen, dass Sie in den meisten Fällen Ihre eigene Speichern-Aktion und Schließen-Aktion in der PS-Aktion aufzeichnen möchten (und als Ziel im Batch-Dialogfeld „Keine“ festlegen).
Ja, ich habe das Speichern wie im Makro hinzugefügt :) Dies wurde behoben, danke!
@S.Redrum das ist großartig.
Ich muss eine Aktion mit Ihrem zweiten Skript erstellen, aber ich weiß nicht, wie ich das anhand des von Ihnen geposteten Codes machen soll. Können Sie Anweisungen geben, um es zu bekommen? Dies ist das erste Mal, dass ich eine Aktion aus einem Code erstelle. Danke.
@JPashs, Sie müssen den Code kopieren und in eine Textdatei einfügen und als einfachen Text mit dem Dateinamen speichern: Image to square - Grow script.jsx. Der Name selbst ist nicht wichtig, aber die Erweiterung "jsx" ist es. Dann sollten Sie mit der Aufzeichnung der Aktion beginnen und das Skript von öffnen File > Scripts > Browse....