Antworten auf deine Fragen:
Neues Thema erstellen

[CS6] - (Script) Save As Tiff in einem bestimmten Ordner

eLem3ntx

back again

Hallo liebe PSD'ler,

im Moment bin ich dabei ein Script zu schreiben, dass per Knopfdruck mein PSD als TIFF speichert.
Dabei wird auch noch das Dialogfeld angezeigt wo die Datei gespeichert werden soll.

Jetzt ist es so, dass meine Projektordnerstruktur immer das gleiche Schema verfolgt.
Da wäre es Hilfreich, wenn das Script das fertige Bild direkt im "Delivery/Done" Ordner ablegt oder anwählt.

Das funktioniert auch, wenn man den Dialog "überspringt", dann wird die Datei direkt gespeichert ohne nochmals Nachzufragen. Jedoch sobald der Dialog angezeigt wird (DialogModes.ALL) wird der Pfad nicht ausgewählt.

Schwierig formuliert :/

Hier mal das Script:

Code:
function SaveAsTIFF(path) {
    //CharID
    var idsave = charIDToTypeID( "save" );

    //DESC creation
    var desc1 = new ActionDescriptor();
    var idAs = charIDToTypeID( "As  " );
        var desc2 = new ActionDescriptor();

    //Save as TIFF
    var idTIFF = charIDToTypeID( "TIFF" );
    desc1.putObject( idAs, idTIFF, desc2 );
   
    //Filepath
    var idIn = charIDToTypeID( "In  " );
    desc2.putPath( idIn, new File( path ) );
       
    //Lowercase
    var idLwCs = charIDToTypeID( "LwCs" );
    desc1.putBoolean( idLwCs, true );
   
    //Do it xD
    executeAction( idsave, desc1, DialogModes.ALL );
}


var docPath = app.activeDocument.path;
var deliveryPath = (docPath + "/test/");
SaveAsTIFF(deliveryPath);


Wie hier zu erkennen ist, soll die Tiff im "test" Unterordner der aktuellen Dokuments abgelegt werden.


Ich hoffe Ihr könnt mir helfen - Vielen Dank schon mal im Voraus ;)

Marc
 

Photoshop

ph_o_e_n_ix

acromyniker

Ich bin zwar nicht sicher, ob ich dich in Bezug auf den Ziel-Ordner richtig verstanden habe, aber vielleicht liege ich ja richtig (das Skript benötigt allerdings noch ein bischen Zuwendung)...

Code:
#target photoshop
app.bringToFront();
var folderPath = app.activeDocument.path;
main();

function main(){
if(!documents.length) return;
newPath = Folder(folderPath +"/test/");
if(!newPath.exists) newPath.create()
};

var fileName  = app.activeDocument.name.replace(/\.[^\.]+$/, '');
var fileType = ".tif";
var saveFile='';

saveFile=File(folderPath + "/test/" + fileName + fileType);
SaveTIFF(saveFile);

function SaveTIFF(saveFile){
tiffSaveOptions = new TiffSaveOptions();
tiffSaveOptions.embedColorProfile = true;
tiffSaveOptions.alphaChannels = true;
tiffSaveOptions.layers = true;
tiffSaveOptions.imageCompression = TIFFEncoding.TIFFLZW;
activeDocument.saveAs(saveFile, tiffSaveOptions, true, Extension.LOWERCASE);
};
 
Zuletzt bearbeitet:

eLem3ntx

back again

Wow!
Danke für die schnelle Antwort! ;)

Ich merke schon dass ich mich "schwierig" ausgedrückt habe.
Dein Script funktioniert übrigens super! Nur wird hier die Datei "direkt" gespeichert, ohne dass nochmals das "speichern unter Fenster" erscheint.

Genau dieses möchte ich nämlich dennoch angezeigt haben, um den Pfad nochmals zu kontrollieren und dann einfach per Enter bestätigen zu können.

Demnach ist glaube ich der ActionDescriptor der Weg um das Fenster öffnen zu lassen?


Vielen Dank!
 

ph_o_e_n_ix

acromyniker

Mich verwirren ehrlich gesagt zwei Dinge ... einmal schreibst du etwas von einem "Delivery/Done"-Ordner - dann von einem "test"-Ordner.

Des weiteren ist mir auch nicht klar, wieso du ein Dialogfenster benötigst, um den Pfad bestätigen/kontrollieren zu können - dazu genügt doch eine simple Alert-Ausgabe. Sinn macht solch ein Dialogfenster doch nur, wenn man den Pfad generell individuell bestimmen möchte, aber nicht, um zu kontrollieren, ob sich das Script nicht vielleicht irrt ;)

Abgesehen davon, dass das Vorhaben eher unsinnig ist, ist auch nicht klar, ob dieses Fenster den Pfad zur Ursprungsdatei anzeigen soll oder direkt den test- bzw. Delivery/Done-Ordner (diese müssten nämlich im Vorfeld erst mal erstellt werden).

Es wäre daher hilfreich, wenn du etwas mehr zum Sinn des gewünschten Dialogfeldes sagen könntest.
 
Zuletzt bearbeitet:

eLem3ntx

back again

Hey ;)

gerade beim nochmals durchlesen ist mir selbst aufgefallen, wie verwirrend das klingt.
Also hier der Klartext:

Es geht um eine Automotive-Produktion. Dabei geht es um mehrere (20-30) PSDs mit jeweiligen "Unterkonfigurationen" die in einzelnen Gruppen in jeder PSD abgelegt sind.

Nach Abschluss des Projekts soll jede PSD + Unterkonfiguration als TIF im "delivery" Ordner abgelegt werden (delivery = test).

Der Delivery Ordner befindet sich in der Dateistruktur immer am selben Ort. Durch das Script soll ermöglicht werden, den Ordner beim Abspeichern bereits "auszuwählen" bzw. direkt in das delivery-Verzeichnis zu springen.

Natürlich könnte ich es einfach per Script ohne Zwischenprompt abspeichern; Jedoch würde ich gerne nochmals im "speichern unter"-Fenster nachkontrollieren, ob ich A: am richtigen Ort bin und B: welche Dateien hier bereits vorhanden sind.

Danke für die Geduld ;)
Ich hoffe jetzt ist klar, was gemeint ist.
 
… Natürlich könnte ich es einfach per Script ohne Zwischenprompt abspeichern; Jedoch würde ich gerne nochmals im "speichern unter"-Fenster nachkontrollieren, ob ich A: am richtigen Ort bin und B: welche Dateien hier bereits vorhanden sind …

ph_o_e_n_i_x hat vollkommen recht.
Es ist zum einen vollkommen verwirrend und zum anderen wird ein Skript ad adsurdum geführt, „um lediglich nachzukontrollieren, ob …“. Denn damit musst du jede einzelne Komposition beim Speichern separat einzeln noch einmal bestätigen.
:eek:
Wofür soll das gut sein???
:confused:

Aber sei's drum. Ist zwar in deinem gewünschten Fall nonsens (um nicht zu sagen: völlig gaga), aber möglich. Und nein, du braucht hier keinen ActionDescriptor.
Code:
var location = '~/Desktop/';
var saveName = 'Beispiel.tif';
var myFile = new File(location+saveName);
var saveFile = myFile.saveDlg(undefined,"Photoshop:*.TIFF");
 
Zuletzt bearbeitet:

ph_o_e_n_ix

acromyniker

Mir ist zwar nun klar, was du machen möchtest, verstehen tue ich es trotzdem nicht ... ;)

Wozu brauchst du die Info, welche Dateien sich im Zielordner befinden?

Du erstellst das Skript doch deswegen, weil du immer wiederkehrende Schritte automatisieren möchtest ... gleichzeitig machst du aber den dadurch möglichen Zeitgewinn nur dadurch zunichte, weil du unbedingt eine optische Kontrolle möchtest.

Diese Kontrolle ist nicht nur unnötig (weil sich ein Skript eigentlich nicht irren kann), sondern ist gleichzeitig eine selbstgestrickte Fehlerquelle.
Wenn es bei dieser Kontrolle darum gehen sollte, bereits bestehende Dateien nicht zu überschreiben, dann ließe sich das wesentlich komfortabler durch automatisches umbenennen der bestehenden Datei (oder eventuell verschieben in einen anderen Ordner) bewerkstelligen.

Falls du trotz aller Bedenken an deinem Vorhaben festhalten möchtest, hat pixxxelschubser dir ja die Grundlagen aufgezeigt ...
 
Zuletzt bearbeitet:

eLem3ntx

back again

Aber sei's drum. Ist zwar in deinem gewünschten Fall nonsens (um nicht zu sagen: völlig gaga), aber möglich. Und nein, du braucht hier keinen ActionDescriptor.

Super genau das hat einwandfrei funktioniert ;)

Klar, das ganze zu automatisieren ergibt auch für mich nur Sinn. Das Problem ist, dass daran viele Kollegen arbeiten werden und jeder zugestimmt hat, dass es für sie besser ist, wenn sie davor noch einmal alles checken können.

Im Endeffekt ist das Script ja vollautomatisch, nur muss nochmal einer zwischendrin "Enter" klicken.

Nützlich kann dies sein, wenn man merkt, dass das zu speichernde Bild doch keine fortlaufende Nummer erhält, sondern ein Spezialfall ist und eine anderen Nomenklatur bekommen sollte. Dann kann in genau diesem Zwischenschritt das korrigiert werden.


Seis drum! Ihr habt mir auf jeden Fall geholfen und der erwünschte Workflow funktioniert nun prächtig :D

Deshalb nochmals vielen Dank für eure Unterstützung!
 

ph_o_e_n_ix

acromyniker

Mir sträuben sich noch immer die Nackenhaare :D

Und ich weigere mich noch immer zu glauben, dass das ganze nicht doch vollautomatisch zu bewerkstelligen sei.

Aber nun gut ... Hauptsache ihr seid zufrieden. :)
 
… Im Endeffekt ist das Script ja vollautomatisch, nur muss nochmal einer zwischendrin "Enter" klicken.

Nützlich kann dies sein, wenn man merkt, dass das zu speichernde Bild doch keine fortlaufende Nummer erhält, sondern ein Spezialfall ist und eine anderen Nomenklatur bekommen sollte. Dann kann in genau diesem Zwischenschritt das korrigiert werden …

Mir geht es immer noch wie ph_o_e_n_ix --> zwecks Nackenhaare. Denn fehlende Nummern, Dateidupletten etc. kann man alles per Grep bzw. Regex im Skript selbst abfangen oder korrigieren. Und anschliessend noch ein Log-file zur Übersicht erstellen, dass dann bei dringendem Bedarf auch automatisch angezeigt werden könnte. So könnte ein Schuh draus werden. Aber sei's drum. Ihr seid glücklich und zufrieden – also alles gut.
;)
 

ph_o_e_n_ix

acromyniker

Meine Theorie ist ja, dass Marc ein Student ist, der sich das Leben auf der einen Seite nicht unnötig schwer machen möchte (vor 12 Uhr aufzustehen ist ja auch schon eine gewisse Leistung) - gleichzeitig aber auf der anderen Seite die Befürchtung hat, nach seinem Abschluß auf der Straße zu sitzen, weil er durch einen selbsterstellten Automatismus überflüssig geworden ist. Daher sieht er einen manuellen Eingriff als existenziell notwendig an - und zwar nicht nur, weil er Angst um seinen Arbeitsplatz hat, sondern weil mit jedem weiteren Kollegen, der das Skript nutzt, die Chancen im Falle eines Falles steigen, nur noch Mitverantwortlicher zu sein, statt Alleinverantwortlicher...

Wenn das mal kein Treffer ins Schwarze war...:ironie:
 
N

neudenk

Guest

Wozu brauche ich ein Script, wenn ich für jede Datei ein Dialogfenster anzeigen will?
Der SInn erschließt sich mir nicht wirklich. Aber, geht mich nix an...
 

eLem3ntx

back again

Meine Theorie ist ja, dass Marc ein Student ist, der sich das Leben auf der einen Seite nicht unnötig schwer machen möchte (vor 12 Uhr aufzustehen ist ja auch schon eine gewisse Leistung)

Hui, NSA is watching you ;)

Das wird ja ein richtig großes Ding hier^^ Nun ja ehrlich gesagt, ich selbst würde mich auch der Vollautomatisierung bzw. dem überspringen des Dialogfeldes anschließen.
*AufAndereSchieb*:dasnehmenwir:
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben