Ausgabe
Ich habe +600 Produktbilder auf meinem Mac bereits ausgeschnitten und in einem eigenen Ordner katalogisiert. Sie sind alle PSDs und ich brauche ein Skript, das Folgendes tut.
- Holen Sie sich den Namen des Ordners
- Schnappen Sie sich alle PSDs in diesem Ordner
- Kombinieren Sie sie in einer großen PSD in der richtigen Reihenfolge (die Dateinamen werden nacheinander als 1843, 1845, 1846 gespeichert, sodass sie in dieser Reihenfolge geöffnet werden müssen).
- Speichern Sie diese PSD
- Speichern Sie die einzelnen Ebenen als PNG mit dem Namen aus dem Ordner + _1, _2, _3
Ich habe bereits Erfahrung mit Bash (ehemaliger Linux-Benutzer) und stundenlang in Automator versucht, aber ohne Erfolg.
Lösung
Willkommen bei Stapelüberlauf. Die schnelle Antwort lautet: Ja, dies ist über Skripting möglich. Ich könnte sogar vorschlagen, in zwei Skripte aufzuteilen, eines zum Erfassen und Speichern der PSDs und das zweite zum Speichern der Ebenen.
Es ist nicht sehr klar, ob es sich um das “Kombinieren” der PSDs oder um “getrennte Ebenen” handelt, nur weiß ich nicht, ob es sich um unterschiedliche Leinwandgrößen handelt, wo jede PSD positioniert werden soll (x-, y-Offsets und Ebenen). Ihre Dateien vor uns, auf die Sie verweisen können. Kurz gesagt, wenn Sie Pseudocode darüber schreiben, was Sie von Ihrem Code erwarten, erleichtert dies die Beantwortung Ihrer Frage.
Hier sind ein paar Code-Snippets, um Ihnen den Einstieg zu erleichtern: Dies öffnet einen Ordner und ruft alle PSDs als Array ab:
// get all the files to process
var folderIn = Folder.selectDialog("Please select folder to process");
if (folderIn != null)
{
var tempFileList = folderIn.getFiles();
}
var fileList = new Array(); // real list to hold images, not folders
for (var i = 0; i < tempFileList.length; i++)
{
// get the psd extension
var ext = tempFileList[i].toString();
ext = ext.substring(ext.lastIndexOf("."), ext.length);
if (tempFileList[i] instanceof File)
{
if (ext == ".psd") fileList.push (tempFileList[i]);
// else (alert("Ignoring " + tempFileList[i]))
}
}
alert("Files:\n" + fileList.length);
Sie können damit ein PNG speichern
function save_png(afilePath)
{
// Save as a png
var pngFile = new File(afilePath);
pngSaveOptions = new PNGSaveOptions();
pngSaveOptions.embedColorProfile = true;
pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1;
activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE);
}
Um eine PSD zu öffnen, verwenden Sie einfach
app.open(fileRef);
Um es zu retten
function savePSD(afilePath)
{
// save out psd
var psdFile = new File(afilePath);
psdSaveOptions = new PhotoshopSaveOptions();
psdSaveOptions.embedColorProfile = true;
psdSaveOptions.alphaChannels = true;
activeDocument.saveAs(psdFile, psdSaveOptions, false, Extension.LOWERCASE);
}
Beantwortet von – Ghoul Fool
Antwort geprüft von – Gilberto Lyons (FixError Admin)