Diesen Script wird über Adobe Photoshop (CS2) aufgerufen und fügt automatisch einen Hinweistext (z.B. Copyright-Hinweis) unten rechts in Bildern ein.
Vorgehensweise:
- JavaScript als *.js irgendwo auf dem Rechner speichern
- Einstellungen im Skript anpassen (einfacher Editor oder ExtendScript Toolkit)
- Photoshop starten
- Datei > Skripten > Durchsuchen dann Laden und fertig!
//################################################################################### // // Skript um einen Hinweistext ins Bild zu setzen und als Web-JPEG zu speichern // //################################################################################### // Einstellungen var picSourcePath = "C:\\Quellordner\\"; var picTargetPath = "C:\\Zielordner\\"; var picText = "Copyright © 2006 by Name"; var picTextSize = 10; // Wert in Pixel //################################################################################### // Hauptskript... // Photoshop-Einstellungen sichern var startRulerUnits = app.preferences.rulerUnits; var startTypeUnits = app.preferences.typeUnits; var startDisplayDialogs = app.displayDialogs; // Dialoge verbergen und Pixel als Einheit einstellen app.preferences.rulerUnits = Units.PIXELS; app.preferences.typeUnits = TypeUnits.PIXELS; app.displayDialogs = DialogModes.NO; // Liste aller Dateien und Ordner erstellen var picFolder = Folder(picSourcePath); var fileList = picFolder.getFiles(); // Pruefung ob auch Dateien und Ordner vorhanden sind if (picSourcePath != null && picTargetPath != null) { // Quellbilder in Schleife oeffnen for (var i=0; i<fileList.length; i++) { // Nur Dateien (und keine Ordner) oeffnen if (fileList[i] instanceof File) { open(fileList[i]); // schwarzer Text als neue Ebene setzen; ist fuer die Umrandung setMyText(picText, picTextSize, "Verdana", "000000", 3, 0, activeDocument.width-4, activeDocument.height-4); // weisser Text als neue Ebene setzen setMyText(picText, picTextSize, "Verdana", "FFFFFF", 3, 0, activeDocument.width-4, activeDocument.height-4); // Alle Ebenen rastern (um Effekte auf Text anwenden zu koennen) activeDocument.rasterizeAllLayers(); // Auf untere Textebene den Filter Dunkle Bereiche vergroessern, Wert=1px activeDocument.artLayers[1].applyMinimum(1); // Transparent der unteren Textebene auf 30%, der oberen auf 60% activeDocument.artLayers[1].opacity = 30; activeDocument.artLayers[0].opacity = 60; // Bild als JPG speichern (Fuer Web speichern...) var newFileName = fileList[i].name; saveWebJpg(newFileName.substring(0, newFileName.length-4) + ".jpg", picTargetPath, 60); // Schliessen ohne Nachfrage app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); } } } // Photoshop-Einstellungen zuruecksetzen app.preferences.rulerUnits = startRulerUnits; app.preferences.typeUnits = startTypeUnits; app.displayDialogs = startDisplayDialogs; alert("Skript fertig :)"); //################################################################################### // Hilfsfunktionen... // Funktion um Dokument als Jpeg zu speichern (Fuer Web speichern...) // Parameter: Dateiname, Pfad mit abschliessendem '\'!, Qualitaet 1-100 // Beispielaufruf: saveWebJpg("test.jpg", "c:\\bilder\\", 75); 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; } // Funktion um Text ins Dokument zu setzen. Neue Textebene wird erstellt. // Parameter: Text, Groesse, Schriftart, Farbe (Hex), Ausrichtung, Glaettung, PosX, PosY // Ausrichtung: 1=links, 2=zentriert, 3=rechts; Glaettung: 0=aus; 1=scharf // Beispielaufruf: setMyText("Mein Text", 10, "Arial", "FF0000", 1, 0, 50, 50); function setMyText(theTxt, txtSize, txtFont, txtColor, txtAlign, txtAntiAlias, txtPosX, txtPosY) { var thisDoc = activeDocument; var textColor = new SolidColor; textColor.rgb.hexValue = txtColor; var myTextLayer = thisDoc.artLayers.add(); myTextLayer.kind = LayerKind.TEXT; myTextLayer.textItem.contents = theTxt; myTextLayer.textItem.font = txtFont; myTextLayer.textItem.size = txtSize; myTextLayer.textItem.color = textColor; switch (txtAlign) { case 1: myTextLayer.textItem.justification = Justification.LEFT; break; case 2: myTextLayer.textItem.justification = Justification.CENTER; break; case 3: myTextLayer.textItem.justification = Justification.RIGHT; break; } switch (txtAntiAlias) { case 0: myTextLayer.textItem.antiAliasMethod = AntiAlias.NONE; break; case 1: myTextLayer.textItem.antiAliasMethod = AntiAlias.SHARP; break; } myTextLayer.textItem.position = Array(txtPosX,txtPosY); }