Ugrás a fő tartalomra

PhotoShop-al képek logo-zása

 

 Erre a Photoshopban több megoldás is van, de ha teljesen automatikusan szeretnéd egy könyvtár összes képére rátenni a logót, akkor egy JavaScript (ExtendScript) a legjobb.




Az alábbi szkript:

  • bekéri (vagy fixen beállítja) a forrásmappát, ahol a képek vannak
  • bekéri a logo.jpg elérési útját
  • végigmegy a mappa minden képfájlján
  • minden képre ráhelyezi a logót a jobb alsó sarokba, kis margóval
  • elmenti (felülírja vagy másik mappába menti, ahogy szeretnéd) JPG-ként

javascript
// ============================================
// Logo elhelyezése egy mappa összes képén
// Photoshop ExtendScript (.jsx)
// ============================================

#target photoshop

function main() {
    // --- Beállítások ---
    var sourceFolder = Folder.selectDialog("Válaszd ki a képeket tartalmazó mappát");
    if (sourceFolder == null) return;

    var logoFile = File.openDialog("Válaszd ki a logo.jpg fájlt", "*.jpg");
    if (logoFile == null) return;

    var outputFolder = new Folder(sourceFolder + "/logozott");
    if (!outputFolder.exists) outputFolder.create();

    var margin = 20; // margó pixelben a sarok és a logo között
    var logoScalePercent = 15; // a logo mérete a kép szélességének %-ában

    // Csak támogatott képformátumok
    var files = sourceFolder.getFiles(/\.(jpg|jpeg|png|tif|tiff)$/i);

    if (files.length == 0) {
        alert("Nem található képfájl a kiválasztott mappában.");
        return;
    }

    // Alapértelmezett mértékegység pixelre állítása (fontos!)
    var originalRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.PIXELS;

    for (var i = 0; i < files.length; i++) {
        var file = files[i];
        if (file instanceof File) {
            processImage(file, logoFile, outputFolder, margin, logoScalePercent);
        }
    }

    app.preferences.rulerUnits = originalRulerUnits;

    alert("Kész! " + files.length + " kép feldolgozva.\nEredmény: " + outputFolder.fsName);
}

function processImage(imageFile, logoFile, outputFolder, margin, logoScalePercent) {
    var doc = app.open(imageFile);

    // Logo behelyezése (Place)
    var logoLayer = null;
    try {
        var desc = new ActionDescriptor();
        desc.putPath(charIDToTypeID("null"), logoFile);
        desc.putEnumerated(
            charIDToTypeID("FTcs"),
            charIDToTypeID("QCSt"),
            charIDToTypeID("Qcsa")
        );
        executeAction(charIDToTypeID("Plc "), desc, DialogModes.NO);
        logoLayer = doc.activeLayer;
    } catch (e) {
        alert("Hiba a logo beillesztésekor: " + e.message);
        doc.close(SaveOptions.DONOTSAVECHANGES);
        return;
    }

    // Logo méretezése a kép szélességének arányában
    var targetWidth = doc.width.as("px") * (logoScalePercent / 100);
    var currentWidth = logoLayer.bounds[2].as("px") - logoLayer.bounds[0].as("px");
    var scaleFactor = (targetWidth / currentWidth) * 100;

    logoLayer.resize(scaleFactor, scaleFactor, AnchorPosition.MIDDLECENTER);

    // Logo pozicionálása jobb alsó sarokba
    var logoWidth = logoLayer.bounds[2].as("px") - logoLayer.bounds[0].as("px");
    var logoHeight = logoLayer.bounds[3].as("px") - logoLayer.bounds[1].as("px");

    var targetX = doc.width.as("px") - logoWidth - margin;
    var targetY = doc.height.as("px") - logoHeight - margin;

    var currentX = logoLayer.bounds[0].as("px");
    var currentY = logoLayer.bounds[1].as("px");

    logoLayer.translate(targetX - currentX, targetY - currentY);

    // Kép laposítása (flatten), majd mentés
    doc.flatten();

    var saveFile = new File(outputFolder + "/" + imageFile.name.replace(/\.[^\.]+$/, "") + ".jpg");
    var jpgOptions = new JPEGSaveOptions();
    jpgOptions.quality = 10; // 0-12 skálán

    doc.saveAs(saveFile, jpgOptions, true, Extension.LOWERCASE);
    doc.close(SaveOptions.DONOTSAVECHANGES);
}

main();

Hogyan használd:

  1. Mentsd el a fenti kódot pl. logo_batch.jsx néven.
  2. Photoshopban: Fájl → Szkriptek → Tallózás... (File → Scripts → Browse), és válaszd ki a fájlt.
  3. A szkript először bekéri a forrásmappát, majd a logo.jpg fájlt.
  4. Az eredmény egy logozott almappába kerül, hogy az eredeti képek épek maradjanak.

Testreszabási lehetőségek

  • margin – ha nagyobb/kisebb távolságot szeretnél a szélektől.
  • logoScalePercent – ha a logo mérete a kép szélességéhez képest nagyobb/kisebb legyen.
  • Ha nem akarod, hogy a logo mérete a kép méretétől függjön, hanem fix pixelméretű legyen, azt is könnyen átírhatjuk.
  • Ha inkább PNG-t szeretnél kimenetként (átlátszó logóval, pl. logo.png alpha csatornával), az is megoldható – ekkor a flatten()-t és a JPEG mentést kell módosítani.



Megjegyzések