Skript zum automatischen Speichern einer PSD beim Speichern einer PNG

Können Sie mir ein Skript geben, das automatisch eine PSD speichert, wenn ich eine PNG speichere? Ich habe ein Skript gefunden, das beim Speichern einer PSD ein PNG speichert. Ich habe versucht, es umzukehren, aber es hat nicht funktioniert :(

main(); 
function main(){ 
    var Name = app.activeDocument.name.replace(/\.[^\.]+$/, ''); 
    var Ext = decodeURI(app.activeDocument.name).replace(/^.*\./,''); 
    if(Ext.toLowerCase() != 'psd') return; 
    var Path = app.activeDocument.path; 
    var saveFile = File(Path + "/" + Name +".png"); 
    if(saveFile.exists) saveFile.remove(); 
    SavePNG(saveFile); 
} 

function SavePNG(saveFile){ 
    pngSaveOptions = new PNGSaveOptions(); 
    activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE); 
} 

Antworten (1)

Der obige Code hat keine Funktion zum Speichern einer PSD. Ihr Code geht davon aus, dass die PSD bereits vorhanden ist.

Versuche dies

main(); 

function main()
{ 

    var Name = app.activeDocument.name.replace(/\.[^\.]+$/, ''); 
    var Ext = decodeURI(app.activeDocument.name).replace(/^.*\./,''); 
    if(Ext.toLowerCase() != 'psd') return;

    // assumes the file has already been saved
    var Path = app.activeDocument.path; 

    // Save as PSD
    var SaveFile = File(Path + "/" + Name +".psd"); 
    if(SaveFile.exists) SaveFile.remove(); 
    SavePSD(SaveFile);

    // Save as PNG
    SaveFile = File(Path + "/" + Name +".png"); 
    if(SaveFile.exists) SaveFile.remove(); 
    SavePNG(SaveFile);

    alert("File saved as .png and .psd");
} 

function SavePNG(saveFile)
{ 
  var pngSaveOptions = new PNGSaveOptions(); 
  activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE); 
}

function SavePSD(saveFile)
{
  var psdFile = new File(saveFile);
  psdSaveOptions = new PhotoshopSaveOptions();
  psdSaveOptions.embedColorProfile = true;
  psdSaveOptions.alphaChannels = true;  
  activeDocument.saveAs(psdFile, psdSaveOptions, false, Extension.LOWERCASE);
}