Ugrás a fő tartalomra

PhotoShop és scriptelés 1

 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