Gibt es eine Möglichkeit, das Ersetzen eines Smart Image durch eine andere Grafik zu automatisieren?
Wenn ich zum Beispiel ein Masterbild einer Tasse habe und nach einiger Bearbeitung eine große Anzahl flacher rechteckiger Bilder/Designs auf der Tasse haben möchte. Ich habe ein intelligentes Bild mit einem der Designs erstellt und es mit einigen Filtern optimiert, um es weniger rechteckig zu machen (Perspektive anpassen, Ober- und Unterseite an die Krümmung des Bechers anpassen usw.).
Jetzt muss ich herausfinden, wie ich (wenn möglich) Variablen verwenden kann, um das Bild im Smart Object zu ersetzen, damit die gleichen Transformationen/Filter für jedes Bild ausgeführt werden, das dann auf der Tasse platziert und gespeichert wird.
Ich sehe dieses Tutorial , das die Grundlagen variabler Daten erklärt und zeigt, wie Bilder als Daten verwendet werden – aber es ist mir nicht klar, wie ich damit das Smart-Objekt aktualisieren soll, damit alle Transformationen auf die Bilder angewendet werden.
Wenn Variablen mit Smart Objects nicht funktionieren, bin ich auch offen für die Verwendung eines Skripts. (Ich hätte gerne einen Ausschnitt darüber, wie man ein intelligentes Objekt per Skript aktualisiert, falls jemand eines hat, da ich noch nie zuvor Skripte mit Photoshop verwendet habe).
Ich habe diese Seite gefunden , die eine Antwort enthält, die dem entspricht, wonach Sie suchen. Ich habe sie so geändert, dass sie mit der neuesten Version funktioniert und hoffentlich Ihren Anforderungen besser entspricht.
.js
ErweiterungFile->Scripts->Browse
.js
Datei und öffnen Sie sie// Replace SmartObject’s Content and Save as PSD
// 2017, use it at your own risk
#target photoshop
if (app.documents.length > 0) {
var myDocument = app.activeDocument;
var theName = myDocument.name.match(/(.*)\.[^\.]+$/)[1];
var thePath = myDocument.path;
var theLayer = myDocument.activeLayer;
// PSD Options;
psdOpts = new PhotoshopSaveOptions();
psdOpts.embedColorProfile = true;
psdOpts.alphaChannels = true;
psdOpts.layers = true;
psdOpts.spotColors = true;
// Check if layer is SmartObject;
if (theLayer.kind != "LayerKind.SMARTOBJECT") {
alert("selected layer is not a smart object")
} else {
// Select Files;
if ($.os.search(/windows/i) != -1) {
var theFiles = File.openDialog("please select files", "*.psd;*.tif;*.jpg", true)
} else {
var theFiles = File.openDialog("please select files", getFiles, true)
};
if (theFiles) {
for (var m = 0; m < theFiles.length; m++) {
// Replace SmartObject
theLayer = replaceContents(theFiles[m], theLayer);
var theNewName = theFiles[m].name.match(/(.*)\.[^\.]+$/)[1];
// Save JPG
myDocument.saveAs((new File(thePath + "/" + theName + "_" + theNewName + ".psd")), psdOpts, true);
}
}
}
};
// Get PSDs, TIFs and JPGs from files
function getFiles(theFile) {
if (theFile.name.match(/\.(psd|tif|jpg)$/i) != null || theFile.constructor.name == "Folder") {
return true
};
};
// Replace SmartObject Contents
function replaceContents(newFile, theSO) {
app.activeDocument.activeLayer = theSO;
// =======================================================
var idplacedLayerReplaceContents = stringIDToTypeID("placedLayerReplaceContents");
var desc3 = new ActionDescriptor();
var idnull = charIDToTypeID("null");
desc3.putPath(idnull, new File(newFile));
var idPgNm = charIDToTypeID("PgNm");
desc3.putInteger(idPgNm, 1);
executeAction(idplacedLayerReplaceContents, desc3, DialogModes.NO);
return app.activeDocument.activeLayer
};
// Suspend History // Better for memory, doesnt clutter history when doing a lot automation MainFunctionNAME.main = function() { MainFunctionNAME(); } app.activeDocument.suspendHistory("HISTORY STATE NAME", 'MainFunctionNAME.main()');
Öffnen Sie die Tassen-PSD. Halten Sie die Tassenebene unter dem gewünschten Bild und Sie können alle gewünschten Bilder auf der Tasse importieren und Aktionen für die perspektivischen Anpassungen aufzeichnen. Spielen Sie diese Aktionen auf jeder Ebene ab, die das gewünschte Bild auf der Tasse enthält. Sie können alle Bilder entweder mithilfe von Aktionen oder manuell in intelligente Objekte konvertieren, es sind nur zwei Klicks erforderlich. Sie können der aufgezeichneten Aktion auch eine Funktionstaste zuweisen, sodass Sie einfach eine Taste drücken können und die Ausgabe in dem Ordner abgelegt wird, den Sie während der Aufzeichnung der Aktion ausgewählt haben. Dies sollte es mit einem Knopfdruck machen, wenn die Automatisierung nicht abgeschlossen ist. aber das ist das Beste, was Sie erreichen können, ohne codieren zu müssen. Wenn Sie immer noch eine vollständige Automatisierung anstreben, müssen Sie etwas Code schreiben.
Wenn jemand ein Testdokument profilieren kann. Ich habe eine Versionsarbeit, die das Smart-Objekt öffnet und eine neue Ebene platziert, es schließt und dann eine neue Datei speichert. Ich sehe viele Leute, die diese Anfrage nach Mockup-Vorlagen stellen.
Ich habe den Code geändert und etwas funktioniert codiert. Ich brauche jedoch eine richtige Testdatei, um zu sehen, ob das Skript gut und wie erwartet funktioniert.
Hoffe, das bekommt keine kleinen Downvotes, irgendwie grausam, wie man hier antwortet
joojaa
Kehlkopf
dnaskrent