Kategorien
PhotoShop

Photoshop Script: Alle Bilder in einem Ordner verkleinern, Rand entfernen und speichern

Skaliert alle Bilder aus einem Ordner auf die gegebene maximal Breite/Höhe und speichert diese wieder ab. Zusätzlich kann ein Rand entfernt und der Dateiname angepasst werden.

//###################################################################################
//
// Crop image by dialog
// Resize images to max 500px depends of witgh/height and save as JPG
// Photoshop Script (CS2, tested on PC) 
//
//###################################################################################

// main settings
var picSourcePath = "C:\\Test\\Original\\";
var picTargetPath = "C:\\Test\\JPG\\";
var maxSize = 500; // 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);

			if (app.activeDocument.width > maxSize || app.activeDocument.height > maxSize) { 

				// remove surrounding
				var cropSize = prompt('Crop from Border (px).', '');

				if (cropSize != '' && cropSize > 0 && 
					cropSize < app.activeDocument.width && 
					cropSize < app.activeDocument.height) { 
						cropWidthFromBorder(cropSize);
				}
				
				// resize
				resize(maxSize);		

				//if (confirm('Sharpen?')) {						
				//	app.activeDocument.activeLayer.applySharpen();
				//}
				
				//if (confirm('Save and Close?')) {						
					saveWebJpg(newFileName.substring(0, newFileName.length-4) + ".jpg", picTargetPath, 75);
					//app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
				//}
			}
			else {
				// if pictures already 500px or smaller, then only rename
				fileList[i].rename(picTargetPath + newFileName.substring(0, newFileName.length-4) + ".jpg");
			}
			
			// ... and close at all events
			app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
		}
	}
}


// restore settings
app.preferences.rulerUnits = startRulerUnits;
app.preferences.typeUnits = startTypeUnits;
app.displayDialogs = startDisplayDialogs;

alert("Done!");

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

// http://www.chadwickwood.com/2008/11/conditional-image-resizing-with-photoshop-and-javascript
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);
} 

function cropWidthFromBorder(cropWidth) { 
	app.activeDocument.crop(Array(
		cropWidth,
		cropWidth,
		app.activeDocument.width - cropWidth,
		app.activeDocument.height - cropWidth));
}
Kategorien
PhotoShop

Photoshop: Tonwertkorrektur im Dialogfenster zurücksetzen

Hat man Einstellungen in der Tonwertkorrektur vorgenommen und will diese rückgängig machen, so muss nicht abgebrochen werden, was ja ein schließen des Dialogfensters zu Folge hätte.

Einfach auf die [Alt] oder [Alt Gr]-Taste gedrückt und aus der Abbrechen-Schaltfläche wird eine Zurück-Schaltfläche!

tonwertkorrektur

Kategorien
PhotoShop

Photoshop Script: Hinweistext in Bild setzen

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