Ausgabe
Ich muss 1000 Bilder mit jeweils unterschiedlichen Nummern generieren. Dazu wird online ein Skript gefunden, das gut funktioniert, aber es funktioniert nicht mit 00 vor den Inkrementen.
Ich kann nicht einfach 00 vor jede Zahl setzen, denn wenn es 10 erreicht, macht es 0010 statt 010, wie ich es will.
Das bedeutet, dass ich den Code etwas ändern muss. Und es ist wahrscheinlich WIRKLICH einfach, aber ich kann es einfach nicht herausfinden. Leider gibt es kein Protokoll, da ich das Skript in Photoshop ausführe.
Hier ist der Code, mit dem ich Probleme habe. Und darunter das Ergebnis:
for (var i=1; i <= numImages; i++) {
if(layer.textItem.contents < 10) {
layer.textItem.contents = "00" + i.toString();
} else if(layer.textItem.contents >= 10) {
layer.textItem.contents = "0" + i.toString();
} else {
layer.textItem.contents = i.toString();
}
SavePNG(directory + imageName + '_'+ i +'.png');
};
Jede Hilfe wird sehr geschätzt! Ich muss nicht mit einem Löffel gefüttert werden! Ich muss aus meinen Fehlern lernen!
Hier ist der gesamte Code im Skript (Hinzufügen vergessen, nachträglich bearbeitet)
var imageName = 'Oppmoteskjema';
var numImages = 15;
function SavePNG(saveFile){
var pngOpts = new ExportOptionsSaveForWeb;
pngOpts.format = SaveDocumentType.PNG
pngOpts.PNG8 = false;
pngOpts.transparency = false;
pngOpts.interlaced = false;
pngOpts.quality = 10;
activeDocument.exportDocument(new File(saveFile),ExportType.SAVEFORWEB,pngOpts);
}
var layer = activeDocument.layers[0];
if (layer.kind == 'LayerKind.TEXT') {
for (var i=1; i <= numImages; i++) {
layer.textItem.contents = i.toString();
var str = "" + i;
var pad = "000";
var ans = pad.substring(0, pad.length - str.length) + str;
SavePNG(directory + imageName + '_'+ ans +'.png');
}
};```
Lösung
Du könntest es so versuchen:
for (var i=1; i <= numImages; i++) {
var str = "" + i;
var pad = "000";
var ans = pad.substring(0, pad.length - str.length) + str;
layer.textItem.contents = ans;
SavePNG(directory + imageName + '_'+ ans +'.png');
};
Sie können die Pad-Vorlage nach Belieben ändern. Die Ausgabe davon wird sein:
1 -> 001
97 -> 097
999 -> 999
1234 -> 1234
Beantwortet von – abellay
Antwort geprüft von – David Goodson (FixError Volunteer)