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