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);
}