Cíl lekce
V této lekci rozšířím přechozí skript a to o zavření všech souborů a uložení změn v těchto soubrech. Převezmu tedy většinu zdrojového kódu z předchozí lekce a jen přidám jednu funkci pro uložení souboru a upravím tělo skriptu.
Využité třídy v této lekci
- Application: kořenová třída, která obsahující třídy File a Folder.
Vytvoření funkce pro uložení obrázku
Vytvoření funkce, která bere parametr nameOfImage. Vložení cesty k souboru a názvu souboru do objektu File. Vytvoření proměnné opts a nastavením atributů uložení na formát JPEG a zadáním kvality obrazu. Zavolání metody saveAs(), která bere parametry - soubor, atributy uložení, hodnotu zda vytvořit kopii (true) nebo přeuložit soubor (false). Po uložení je ještě třeba aktuální soubor zavřít, abych se posunul k dalšímu souboru. Jako udávání cest, bych nedoporučil dávat relativní cestu. Z toho důvodu, že Adobe Photoshop bere v potaz jako výchozí adresář, adresář scripts, který se nachází v cestě uložení programu. Toto by v případě různých nastaveních práv na systému, či využívání několika uživatelů v systému mohlo vést k potížím z důvodu práv zápisu do tohoto adresáře. Nicméně tato situace může nastat i u cesty absolutní, ale je již méně pravděpodobná, jelikož uživatel v kládá cestu vědomně.
function saveJpeg(nameOfImage){
//absolutní cesta k novému souboru, název souboru
var file = new File('C:/Users/David/Downloads/test/' + nameOfImage + "_upraveny.jpg");
//atributy nového souboru
var opts = new JPEGSaveOptions();
//kvalita formátu JPEG -> rozsah 0 - 10
opts.quality = 5;
//uložení souboru jako kopie
app.activeDocument.saveAs(file, opts,true);
//zavření aktuálního souboru
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
Vložení funkce pro uložení do těla skriptu
Nyní stačí vytvořenou funkci vložit na patřičné místo do těla předešlého skriptu. A to do funkcí na zavření všech souborů, či na zavření všech soubroů kromě aktuálního.
//funkce na zavření všech souborů
function closeAllFiles(){
//dokud je otevřený dokument, zavři
while (documents.length > 0) {
saveJpeg(app.activeDocument.name);
}
}
//funkce na zavření všech souborů, kromě aktivního
function closeAllFilesExceptActiveOne(){
var actDocument = app.activeDocument;
while (documents.length > 1) {
for (var i = 0; i < documents.length; i++) {
//zavřít všechny, kromě aktivního
if (actDocument != documents[i]) {
saveJpeg(app.activeDocument.name);
}
}
}
}
Výsledný zdrojový kód
if (documents.length) {
//Použijte funkci, kterou potřebujete
//Zavření všech dokumentů
closeAllFiles()
//Zavření všech dokumentů, kromě aktivního
//closeAllFilesExceptActiveOne()
//Nastavení id události pro zavření programu
var idquit = charIDToTypeID( "quit" );
//Zavření programu Adobe Photoshop po změnách
executeAction( idquit, undefined, DialogModes.ALL );
} else {
alert("Žádný dokument není otevřený.", "Varování");
}
//funkce na zavření všech souborů
function closeAllFiles() {
//dokud je otevřený dokument, zavři
while (documents.length > 0) {
saveJpeg(app.activeDocument.name);
}
}
//funkce na zavření všech souborů, kromě aktivního
function closeAllFilesExceptActiveOne() {
var actDocument = app.activeDocument;
while (documents.length > 1) {
for (var i = 0; i < documents.length; i++) {
//zavřít všechny, kromě aktivního
if (actDocument != documents[i]) {
saveJpeg(app.activeDocument.name);
}
}
}
}
function saveJpeg(nameOfImage) {
//absolutní cesta k novému souboru, název souboru
var file = new File("C:/Users/dbala/Desktop/test/" + nameOfImage + "_upraveny.jpg");
//atributy nového souboru
var opts = new JPEGSaveOptions();
//kvalita formátu JPEG -> rozsah 0 - 10
opts.quality = 5;
//uložení souboru jako kopie
app.activeDocument.saveAs(file, opts, true);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}