PS21 és scriptelés 1
Alapok
Példa egy egyszerű JavaScript szkriptre, ami megnyit egy képet, átméretezi, és elmenti:javascript
// Photoshop JavaScript szkript
var doc = app.open(new File("~/Desktop/kep.jpg")); // Kép megnyitása
doc.resizeImage(UnitValue(800, "px"), null, null, ResampleMethod.BICUBIC); // Átméretezés 800px szélességre
var saveFile = new File("~/Desktop/kep_atmeretezve.jpg"); // Mentési útvonal
var jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.quality = 10; // JPG minőség (1-12)
doc.saveAs(saveFile, jpgSaveOptions); // Mentés
doc.close(SaveOptions.DONOTSAVECHANGES); // Dokumentum bezárása mentés nélkül
Hogyan futtasd a szkriptet:
A megírt kódot mentsd el a kódot .jsx kiterjesztéssel (pl. script.jsx).
Photoshopban: File > Scripts > Browse, majd válaszd ki a szkriptet.
Vagy használd az ExtendScript Toolkit-ot a szkript szerkesztéséhez és futtatásához.
Gyakori feladatok, amikben segíthetek:
Tömeges képfeldolgozás (pl. átméretezés, vízjel hozzáadása).
Rétegek manipulálása (pl. rétegek egyesítése, elrejtése, szöveg hozzáadása).
Exportálás különböző formátumokba (JPG, PNG, PSD stb.).
Szűrők vagy effektek automatikus alkalmazása.
Mappákban lévő képek feldolgozása ciklussal.
1. Rétegkezelés:
Minden réteg elrejtése, kivéve az elsőtEz a szkript elrejti az összes réteget, kivéve az elsőt az aktív dokumentumban.javascript
// Összes réteg elrejtése, kivéve az elsőt
var doc = app.activeDocument;
for (var i = 0; i < doc.layers.length; i++) {
if (i === 0) {
doc.layers[i].visible = true; // Az első réteg látható marad
} else {
doc.layers[i].visible = false; // Többi réteg elrejtése
}
}
Magyarázat:
app.activeDocument az aktuális dokumentumra hivatkozik.
doc.layers a dokumentum összes rétegét tartalmazza.
A ciklus végigmegy a rétegeken, és csak az elsőt (i === 0) hagyja láthatóvá.
Használat:
Hasznos, ha egy adott rétegre akarsz fókuszálni, vagy takarítani szeretnél a rétegpalettán.2. Képek tömeges átméretezése egy mappábanEz a szkript egy mappában lévő összes JPG képet átméretez 800px szélességre, és egy új mappába menti őket.javascript
// Mappában lévő képek átméretezése
var inputFolder = Folder.selectDialog("Válassz egy mappát a képekkel");
var outputFolder = Folder.selectDialog("Válassz egy mappát a mentéshez");
if (inputFolder != null && outputFolder != null) {
var fileList = inputFolder.getFiles("*.jpg"); // Csak JPG fájlok
for (var i = 0; i < fileList.length; i++) {
var doc = app.open(fileList[i]); // Kép megnyitása
doc.resizeImage(UnitValue(800, "px"), null, null, ResampleMethod.BICUBIC); // Átméretezés
var saveFile = new File(outputFolder + "/" + doc.name);
var jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.quality = 10; // JPG minőség
doc.saveAs(saveFile, jpgSaveOptions); // Mentés
doc.close(SaveOptions.DONOTSAVECHANGES); // Bezárás
}
alert("Kész! " + fileList.length + " kép átméretezve.");
}
Magyarázat:
Folder.selectDialog lehetővé teszi a mappa kiválasztását.
getFiles("*.jpg") csak a JPG fájlokat gyűjti össze.
A szkript minden képet megnyit, átméretez, majd elmenti az output mappába.
Használat:
Ideális, ha sok képet kell gyorsan átméretezni, pl. webes használatra.3. Szövegréteg hozzáadása és formázásaEz a szkript egy új szövegréteget hoz létre, és beállít egy egyedi szöveget, betűtípust és méretet.javascript
// Szövegréteg hozzáadása
var doc = app.activeDocument;
var textLayer = doc.artLayers.add(); // Új réteg
textLayer.kind = LayerKind.TEXT; // Szövegrétegként definiálása
textLayer.textItem.contents = "Teszt Szöveg"; // Szöveg tartalma
textLayer.textItem.size = 36; // Betűméret (pont)
textLayer.textItem.font = "Arial"; // Betűtípus
textLayer.textItem.position = [100, 100]; // Pozíció (x, y) pixelben
textLayer.textItem.color = new SolidColor(); // Szín beállítása
textLayer.textItem.color.rgb.red = 255; // Piros
textLayer.textItem.color.rgb.green = 0; // Zöld
textLayer.textItem.color.rgb.blue = 0; // Kék
Magyarázat:
LayerKind.TEXT szövegréteget hoz létre.
A textItem tulajdonságokkal testreszabható a szöveg (tartalom, betűtípus, méret, szín, pozíció).
Használat:
Hasznos vízjelek, feliratok vagy automatikus szöveg hozzáadásához.4. Szűrő alkalmazása: Gaussian BlurEz a szkript egy Gaussian Blur szűrőt alkalmaz az aktív rétegre.javascript
// Gaussian Blur alkalmazása az aktív rétegre
var doc = app.activeDocument;
var activeLayer = doc.activeLayer;
activeLayer.applyGaussianBlur(5); // 5px sugarú elmosás
Magyarázat:
applyGaussianBlur(radius) alkalmazza a Gaussian Blur szűrőt az aktuális rétegre.
A radius érték (pl. 5) pixelben adja meg az elmosás mértékét.
Használat:
Automatizálható szűrők alkalmazása, pl. háttér elmosása vagy effektek hozzáadása.5. Dokumentum exportálása PNG formátumbanEz a szkript az aktuális dokumentumot PNG-ként menti el.javascript
// Dokumentum exportálása PNG-ként
var doc = app.activeDocument;
var saveFile = new File("~/Desktop/kimenet.png");
var pngSaveOptions = new PNGSaveOptions();
pngSaveOptions.interlaced = false; // Nem progresszív PNG
doc.saveAs(saveFile, pngSaveOptions);
Magyarázat:
PNGSaveOptions beállítja a PNG mentési opciókat.
A saveAs elmenti a dokumentumot a megadott helyre.
Használat:
Gyors exportálás webes vagy más célra.Fontos tudnivalók a PS21 JavaScript szkripteléshez:API dokumentáció: A Photoshop CC 2021 JavaScript referencia elérhető az Adobe weboldalán, vagy az ExtendScript Toolkit-ban. A PS21 API támogatja a rétegek, szűrők, exportálás és sok más funkció kezelését.
Hibakezelés:
Mindig érdemes try-catch blokkokat használni a hibák kezelésére, pl.:javascript
try {
var doc = app.activeDocument;
// kód
} catch (e) {
alert("Hiba: " + e);
}
Futtatás módjai:
A szkripteket futtathatod közvetlenül a Photoshopból (File > Scripts > Browse) vagy az ExtendScript Toolkit segítségével. Mentsd a fájlokat .jsx kiterjesztéssel.
Korlátozások:
Bizonyos funkciók (pl. egyes szűrők) csak akkor működnek, ha a réteg raszteres, nem pedig vektoros vagy intelligens objektum.
Tömeges képméretező szkript (JSX)
#target photoshop
app.bringToFront();
// --- Beállítások ---
var targetWidth = 800; // kívánt szélesség pixelben
var saveFolder = Folder.selectDialog("Válaszd ki a mentési mappát:");
var inputFolder = Folder.selectDialog("Válaszd ki a képeket tartalmazó mappát:");
if (inputFolder && saveFolder) {
var files = inputFolder.getFiles(/\.(jpg|jpeg|png)$/i);
for (var i = 0; i < files.length; i++) {
var file = files[i];
if (file instanceof File) {
var doc = open(file);
// Arányos átméretezés
var originalWidth = doc.width.as("px");
var originalHeight = doc.height.as("px");
var ratio = targetWidth / originalWidth;
var newHeight = originalHeight * ratio;
doc.resizeImage(UnitValue(targetWidth, "px"), UnitValue(newHeight, "px"), null, ResampleMethod.BICUBIC);
// Mentés PNG formátumban
var saveFile = new File(saveFolder + "/" + doc.name.replace(/\.[^\.]+$/, "") + "_resized.png");
var pngOptions = new PNGSaveOptions();
pngOptions.compression = 9;
doc.saveAs(saveFile, pngOptions, true);
doc.close(SaveOptions.DONOTSAVECHANGES);
}
}
alert("Képek sikeresen átméretezve és elmentve!");
}
Használat lépései:
Nyisd meg a Photoshopot.
Másold a fenti kódot egy .jsx fájlba (pl. batch_resize.jsx).
Photoshopban: File > Scripts > Browse...
Válaszd ki a szkript fájlt.
Először válaszd ki a mentési mappát, majd a képek mappáját.
Megjegyzések
Megjegyzés küldése