PS21 és scriptelés 3
A Photoshop CC 2021-ben (PS21) a képfeldolgozás metaadatok alapján JavaScript (ExtendScript) segítségével lehetővé teszi, hogy a képek EXIF, IPTC vagy más metaadatait (pl. készítési dátum, kamera típusa, kulcsszavak) kiolvasd, és ezek alapján automatizált műveleteket végezz.
Ez különösen hasznos tömeges képfeldolgozásnál, például fotósorozatok rendszerezésénél, szűrésénél vagy metaadatok alapján történő szerkesztésnél.
Az alábbiakban részletezem a lehetőségeket, példákkal és magyarázatokkal, kifejezetten a PS21 JavaScript API-jára fókuszálva.
Miért hasznos a metaadatok alapján történő képfeldolgozás?
Automatikus rendszerezés: Pl. képek csoportosítása készítési dátum vagy kamera típusa szerint.
Feltételes szerkesztés: Pl. csak bizonyos méretű vagy típusú képek szerkesztése.
Testreszabott exportálás: Pl. fájlnevek generálása metaadatokból (készítési idő, helyszín).
Professzionális munkafolyamatok: Fotósok számára ideális, akik metaadatok alapján szűrnek vagy annotálnak képeket.
Hibaszűrés: Ellenőrizheted, hogy a képek tartalmaznak-e szükséges metaadatokat.
Milyen metaadatokat használhatsz a Photoshopban?
A Photoshop JavaScript API-ja az app.activeDocument.info objektumon keresztül fér hozzá a metaadatokhoz, például:EXIF: Kameraadatok (pl. exifDate, cameraModel, exposureTime).
IPTC: Tartalomra vonatkozó adatok (pl. author, keywords, caption).
Egyéb: Dokumentum címe (title), szerzői jogi információk (copyrightNotice).
Az EXIF adatok részletesebb kiolvasásához az ExternalObject.AdobeXMPScript könyvtárat is használhatod, amely az XMP metaadatokat kezeli.
Hogyan működik a metaadatok kiolvasása és használata?
Metaadatok elérése: Az app.activeDocument.info objektum közvetlen hozzáférést biztosít az alapvető metaadatokhoz.
XMP metaadatok: Az XMP könyvtár segítségével mélyebb EXIF vagy IPTC adatok olvashatók ki.
Feldolgozás: A metaadatok alapján döntéseket hozhatsz (pl. feltételes logika) vagy testreszabhatod a műveleteket (pl. fájlnevek, szűrők).
Példák a metaadatok alapján történő képfeldolgozásra
1. Képek szűrése készítési dátum alapjánEz a szkript csak azokat a képeket dolgozza fel egy mappában, amelyek 2020 után készültek, és átméretezi őket.javascript
// Képek szűrése készítési dátum alapján
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) {
// XMP könyvtár betöltése
if (ExternalObject.AdobeXMPScript == undefined) {
ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
}
var fileList = inputFolder.getFiles("*.jpg"); // JPG fájlok
for (var i = 0; i < fileList.length; i++) {
var doc = app.open(fileList[i]);
var xmp = new XMPMeta(doc.xmpMetadata.rawData);
var dateTime = xmp.getProperty(XMPConst.NS_EXIF, "DateTimeOriginal");
if (dateTime != null && dateTime.toString().indexOf("2020") >= 0) { // 2020 utáni képek
doc.resizeImage(UnitValue(800, "px"), null, null, ResampleMethod.BICUBIC);
var saveFile = new File(outputFolder + "/" + doc.name);
var jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.quality = 10;
doc.saveAs(saveFile, jpgSaveOptions);
}
doc.close(SaveOptions.DONOTSAVECHANGES);
}
alert("Kész! Feldolgozva a 2020 utáni képek.");
}
Magyarázat:
Az ExternalObject.AdobeXMPScript betölti az XMP könyvtárat.
Az XMPMeta objektum segítségével kiolvasható az EXIF DateTimeOriginal mező.
Csak azok a képek kerülnek átméretezésre, amelyek dátuma 2020 utáni.
A feldolgozott képek az output mappába mentődnek.
Használat:
Fotósorozatok szűrése dátum alapján, pl. csak egy adott év képeinek feldolgozása.2. Fájlnevek generálása metaadatokbólEz a szkript a kép készítési dátumát és a kamera típusát használja fel a mentett fájlnevek létrehozására.javascript
// Fájlnevek generálása metaadatokból
var doc = app.activeDocument;
// XMP könyvtár betöltése
if (ExternalObject.AdobeXMPScript == undefined) {
ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
}
var xmp = new XMPMeta(doc.xmpMetadata.rawData);
var dateTime = xmp.getProperty(XMPConst.NS_EXIF, "DateTimeOriginal") || "UnknownDate";
var cameraModel = xmp.getProperty(XMPConst.NS_EXIF, "Model") || "UnknownCamera";
// Dátum formázása (pl. 2025-07-27)
var fileDate = dateTime.toString().replace(/:/g, "-").substring(0, 10);
var fileName = fileDate + "_" + cameraModel.toString().replace(/\s/g, "_");
// Mentés
var saveFile = new File("~/Desktop/" + fileName + ".jpg");
var jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.quality = 10;
doc.saveAs(saveFile, jpgSaveOptions);
Magyarázat:
A szkript kiolvassa a készítési dátumot és a kamera típusát az XMP metaadatokból.
A fájlnév pl. 2025-07-27_Canon_EOS_5D.jpg formátumú lesz.
A replace függvényekkel a fájlnév fájlrendszer-barát lesz (szóközök és kettőspontok eltávolítása).
Használat:
Szervezett fájlnevek létrehozása fotós munkafolyamatokhoz.3. Szövegréteg hozzáadása IPTC kulcsszavak alapjánEz a szkript egy szövegréteget ad hozzá, amely a kép IPTC kulcsszavait tartalmazza.javascript
// Szövegréteg IPTC kulcsszavakkal
var doc = app.activeDocument;
var keywords = doc.info.keywords.join(", "); // IPTC kulcsszavak összefűzése
if (keywords) {
var textLayer = doc.artLayers.add();
textLayer.kind = LayerKind.TEXT;
textLayer.textItem.contents = "Kulcsszavak: " + keywords;
textLayer.textItem.size = 24;
textLayer.textItem.font = "Arial";
textLayer.textItem.position = [50, doc.height - 50]; // Alulra helyezés
}
var saveFile = new File("~/Desktop/kimenet.png");
var pngSaveOptions = new PNGSaveOptions();
doc.saveAs(saveFile, pngSaveOptions);
Magyarázat:
A doc.info.keywords kiolvassa az IPTC kulcsszavakat (tömbként), amelyeket összefűzünk.
A kulcsszavakat egy szövegrétegen helyezzük el a kép alján.
Használat:
Metaadatok vizuális megjelenítése, pl. archiváláshoz vagy galériákhoz.4. Képek szűrése kamera típusa alapjánEz a szkript csak Canon kamerával készült képeket dolgoz fel, és alkalmaz rájuk egy akciót.javascript
// Képek szűrése kamera típusa alapján
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) {
if (ExternalObject.AdobeXMPScript == undefined) {
ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
}
var fileList = inputFolder.getFiles("*.jpg");
for (var i = 0; i < fileList.length; i++) {
var doc = app.open(fileList[i]);
var xmp = new XMPMeta(doc.xmpMetadata.rawData);
var cameraModel = xmp.getProperty(XMPConst.NS_EXIF, "Model") || "";
if (cameraModel.toString().indexOf("Canon") >= 0) { // Csak Canon képek
app.doAction("FeketeFehér", "SajátAkciók"); // Akció futtatása
var saveFile = new File(outputFolder + "/" + doc.name);
var jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.quality = 10;
doc.saveAs(saveFile, jpgSaveOptions);
}
doc.close(SaveOptions.DONOTSAVECHANGES);
}
alert("Kész! Canon képek feldolgozva.");
}
Magyarázat:
A szkript csak Canon kamerával készült képeken futtat egy akciót.
A cameraModel mezőt az XMP adatokból olvassa ki.
Használat:
Speciális eszközökkel készült képek szűrése, pl. különböző kamerák eltérő szerkesztése.Fontos tudnivalókXMP könyvtár: Az ExternalObject.AdobeXMPScript használata szükséges az EXIF és IPTC adatok részletes kiolvasásához.
Ellenőrizd, hogy a Photoshop telepítése tartalmazza ezt a könyvtárat.
Metaadatok hiánya:
Nem minden kép tartalmazza az összes metaadatot. Használj alapértelmezett értékeket (pl. "Unknown") a hibák elkerülésére.
Hibakezelés:
Mindig használj try-catch blokkokat, mert a metaadatok kiolvasása hibát dobhat:javascript
try {
var xmp = new XMPMeta(doc.xmpMetadata.rawData);
var data = xmp.getProperty(XMPConst.NS_EXIF, "DateTimeOriginal");
} catch (e) {
alert("Hiba a metaadatok olvasásakor: " + e);
}
Metaadatok szerkesztése:
Az info objektummal vagy XMP-vel nemcsak olvasni, hanem írni is tudsz metaadatokat (pl. doc.info.author = "Nevem";).
Dokumentáció:
Az Adobe XMP Scripting Reference és a Photoshop JavaScript Reference részletezi a metaadat-mezőket.
Gyakorlati alkalmazások
Fotós munkafolyamatok: Képek szétválogatása dátum, hely vagy kamera alapján.
Automatikus annotáció: Metaadatok (pl. kulcsszavak, szerző) hozzáadása szövegrétegként.
Fájlrendszerezés: Mappák létrehozása metaadatok alapján (pl. év/hónap szerinti mappák).
Minőségellenőrzés: Ellenőrizheted, hogy minden kép tartalmaz-e szükséges metaadatokat.
Megjegyzések
Megjegyzés küldése