# Photoshop Script zur Bildkonvertierung



## c_nolte (28. Juni 2013)

Hallo zusammen,

ich benötige ein Photoshop Script zur automatischen Bildkonvertierung.
Das Script soll folgendes können: Bilddateien aus einem vorgegebenen Ordner in ein festgelegtes Format umwandeln - nämlich JPEG, RGB, 72dpi und eine Breite bzw. Höhe von 234 Pixeln (je nachdem ob es ein Hoch- oder Querformat ist). Die Ergebnisse sollen in einem bestimmten Zielordner abgelegt werden.
Die Quelldateien sind entweder im Format JPEG, TIFF oder EPS.

Eines vorweg: Ich kenne mich mit Scripten überhaupt nicht aus und habe mir folgendes zusammengegoogelt:



```
// main settings
var picSourcePath = "C:\\Users\\nolte\\Desktop\\Originale\\";
var picTargetPath = "C:\\Users\\nolte\\Desktop\\Ausgang\\";
var maxSize = 234; // max width and height
 
//###################################################################################
 
 
// save settings and customize environment
var startRulerUnits = app.preferences.rulerUnits;
var startTypeUnits = app.preferences.typeUnits;
var startDisplayDialogs = app.displayDialogs;
app.preferences.rulerUnits = Units.PIXELS;
app.preferences.typeUnits = TypeUnits.PIXELS;
app.displayDialogs = DialogModes.NO;
//var doc = app.activeDocument;
 
 
 
var picFolder = Folder(picSourcePath);
var fileList = picFolder.getFiles();
 
if (picSourcePath != null && picTargetPath != null) {
 
    for (var i=0; i<fileList.length; i++) {
 
        if (fileList[i] instanceof File) {
            open(fileList[i]);
 
            var newFileName = fileList[i].name;
            app.activeDocument.changeMode(ChangeMode.RGB);
 
 
{        
                // resize
                resize(maxSize);        
 
                //if (confirm('Sharpen?')) {                        
                //    app.activeDocument.activeLayer.applySharpen();
                //}
 
                //if (confirm('Save and Close?')) {                        
                    saveWebJpg(newFileName.substring(0, newFileName.length-4) + ".jpg", picTargetPath, 100);
                    //app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
                //}
            }
            // ... and close at all events
            app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
        }
 
        }
}
 
 
// restore settings
app.preferences.rulerUnits = startRulerUnits;
app.preferences.typeUnits = startTypeUnits;
app.displayDialogs = startDisplayDialogs;
 
 
// Funktion um Dokument als Jpeg zu speichern (Fuer Web speichern...)
// Parameter: Dateiname, Pfad mit abschliessendem '\'!, Qualitaet 1-100
function saveWebJpg(jpgName, filePath, jpgQuality ) {
 var saveFile = new File(filePath + jpgName);
 var webJpgOptions = new ExportOptionsSaveForWeb();
 webJpgOptions.format = SaveDocumentType.JPEG;
 webJpgOptions.optimized = true;
 webJpgOptions.quality = jpgQuality;
 activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB, webJpgOptions);
 File = null; ExportOptionsSaveForWeb = null;
}
 
 
function resize(size)
{
  if(app.activeDocument.width > app.activeDocument.height)
    app.activeDocument.resizeImage(size, (size * app.activeDocument.height/app.activeDocument.width),null, ResampleMethod.BICUBIC);
  else
    app.activeDocument.resizeImage((size * app.activeDocument.width/app.activeDocument.height), size, null, ResampleMethod.BICUBIC);
}
```


Dieses Script funktioniert einwandfrei mit JPEGs und TIFFs, allerdings nicht mir Vektor-EPSen.
Photoshop rastert ein Vektor-EPS standardmäßig wohl mit 72dpi. Das heißt, wenn die EPSe so klein geöffnet werden und dann noch als "Save for Web as JPG" gespeichert werden, ist die Qualität ziemlich unteridisch.


Bei meiner weiteren Recherche bin ich auf die Funktion "epsOpenOptions" gestoßen. Ein entsprechendes Script sähe z.B. so aus:


```
// Create a EPS option object [height & width are doc size]
var epsOpenOptions = new EPSOpenOptions
epsOpenOptions.antiAlias = true
epsOpenOptions.mode = OpenDocumentMode.RGB
epsOpenOptions.resolution = 300
epsOpenOptions.page = 3
epsOpenOptions.constrainProportions = true
```
 
Das Problem ist, dass ich es nicht hinbekomme, diese Funktion in mein Script zu integrieren. Vielleicht kann mir ja hier jemand dabei helfen.
Konkret gesagt möchte ich, dass Photoshop beim Öffnen der Dateien via Script prüft, ob es sich um ein EPS handelt. Wenn ja, soll dieses mit 300dpi gerastert werden, bevor der Rest des Scripts greift und das EPS als Web-JPEG gesichert wird. Alle anderen Dateiformate (TIFF und JPEG) können so geöffnet werden, wie sie sind, und dann ebenfalls als Web-JPG gesichert werden.

Bin für jeden Hinweis dankbar!


----------

