Aankondiging

Collapse
No announcement yet.

Help?: Lightroom 2 --> Post Process Action : Photoshop Script

Collapse
X
 
  • Weergaveopties
  • Begin
Clear All
new posts

  • Help?: Lightroom 2 --> Post Process Action : Photoshop Script

    De situatie :
    Ik beheer mijn fotobibliotheek in Adobe Lightroom 2.
    Daarnaast heb ik in javascript een Photoshop scriptje gemaakt die een kadertje rond mijn foto's trekt en wat exif-info in het kader plaatst e.d.

    Nu de vraag:
    Hoe kan ik dat script automatisch laten runnen op de foto's die ik uit Lightroom exporteer, via een Post-Process Action ?
    Dus, zodat ik na het exporteren niet meer manueel het script op de foto's moet loslaten.

    Iemand ervaring hiermee ?
    Canon
    http://www.jodeconinck.be/

  • #2
    Re: Help?: Lightroom 2 --> Post Process Action : Photoshop Script

    Of dat kan durf ik niet zeggen, omdat ik geen ervaring heb met actionscript.

    Maar, jouw eigengemaakte script lijkt qua beschrijving sterk op de LR/Mogrify Plugin van Timothy Armes. Daarmee kan je ook allerhande kaders rond je foto's maken en exif-data mee wegschrijven.

    En die kan je alleszins installeren.
    Lightroom 6/CC Ontmaskerd: 450 blz. Lightroom
    Bestel het eBook of gedrukte boek nu via deze link.
    GRATIS eBook 'Tien Tips voor Betere Reisfoto's'. Meer info hier.

    Comment


    • #3
      Re: Help?: Lightroom 2 --> Post Process Action : Photoshop Script

      Oorspronkelijk geplaatst door MoreThanWords Bekijk bericht
      Of dat kan durf ik niet zeggen, omdat ik geen ervaring heb met actionscript.

      Maar, jouw eigengemaakte script lijkt qua beschrijving sterk op de LR/Mogrify Plugin van Timothy Armes. Daarmee kan je ook allerhande kaders rond je foto's maken en exif-data mee wegschrijven.

      En die kan je alleszins installeren.
      Ja, die Mogrify Plugin heb ik al geprobeerd ... werkt goed, maar ik wil toch de vrijheid genieten van een eigen script te maken.
      Zodat ik ook nog andere dingen kan doen dan kaders met exif toevoegen e.d.
      Canon
      http://www.jodeconinck.be/

      Comment


      • #4
        Re: Help?: Lightroom 2 --> Post Process Action : Photoshop Script

        Hoe je het scriptje automatisch moet laten lopen ... geen flauw benul van maar ik ben wel geïnteresseerd in het scriptje

        Comment


        • #5
          Re: Help?: Lightroom 2 --> Post Process Action : Photoshop Script

          Ik zou ook wel eens het script willen zien.

          @ Michake: op mijn blog kan je mijn script vinden.

          Comment


          • #6
            Re: Help?: Lightroom 2 --> Post Process Action : Photoshop Script

            Al speelt de inhoud van het script geen enkele rol mbt een antwoord op mijn initiële vraag, geef ik hier op algemeen verzoek de inhoud van het script.
            Als je het zelf wilt gebruiken zul je hier en daar wel wat zaken moeten aanpassen.

            //*****************
            // CONST PARAMETERS
            //*****************
            preferences.rulerUnits = Units.PIXELS;
            var black = new SolidColor();
            black.rgb.red = black.rgb.green = black.rgb.blue = 0;
            var white = new SolidColor();
            white.rgb.red = white.rgb.green = white.rgb.blue = 255;
            var fotopicClr = new SolidColor();
            fotopicClr.rgb.red = 0;
            fotopicClr.rgb.green = 103;
            fotopicClr.rgb.blue = 102;
            var fotopicClr2 = new SolidColor();
            fotopicClr2.rgb.red = 0;
            fotopicClr2.rgb.green = 255;
            fotopicClr2.rgb.blue = 255;
            const dfltOpenFolder = "C:\\Aa_jdc\\Foto\\AA_FotoDB\\TMP\\";
            const dfltSaveFolder = "C:\\Aa_jdc\\Foto\\AA_FotoDB\\Transfer\\";
            const imageSize = 900
            const imageDpi = 72;
            const borderStyle = "JDC Publish";
            const signature = "Jo De Coninck";
            const borderSize = 25;
            const borderBottomExtra = 55;
            backgroundColor = fotopicClr;

            //****************
            // INPUTPARAMETERS
            //****************
            var baseFolder = Folder.selectDialog("Open folder:", Folder(dfltOpenFolder));
            var saveFolder = Folder.selectDialog("Save folder:", Folder(dfltSaveFolder));
            var title = prompt ("Titel: ","");

            //***********
            // EXIF vars
            //***********
            var cameraModel = "";
            var focalLength = "";
            var sensitivity = "";
            var dateTaken = "";
            var timeTaken = "";
            var yearTaken = "";
            var exposureTime = "";
            var exposureAperture = "";
            var exposureMode = "";
            var whiteBalance = "";
            var afMode = "";
            var flash = "";
            var flashSyncMode = "";
            var flashAutoMode = "";
            var flashAutoComp = "";
            var exposureComp = "";
            var lens = "";


            //************************************************** ******************************************
            // MAIN PROGRAM
            //************************************************** ******************************************
            // get files
            var photos = baseFolder.getFiles("*.*");
            var fileCount = photos.length;

            // loop files
            for (i = 0; i < fileCount ; i++) {
            // open file
            var fileRef = new File(photos[i]);
            open (fileRef);
            var AD = activeDocument;

            resize(AD);

            createBorder(AD);

            getExif(AD);

            addText(AD);

            saveFlat(AD);

            AD.close(); // close file
            }
            //************************************************** ******************************************

            //********************
            function resize(photo) {
            //********************
            var height = photo.height.value;
            var width = photo.width.value;
            if(width > height) {
            height = height/width*imageSize;
            width = imageSize;
            }
            else {
            width = width/height*imageSize;
            height = imageSize;
            }
            photo.resizeImage(width,height,imageDpi);
            }

            //**************************
            function createBorder(photo) {
            //**************************
            var bgLayer = photo.activeLayer;
            var picLayer = bgLayer.duplicate();
            picLayer.applyStyle(borderStyle);
            photo.resizeCanvas(photo.width.value + borderSize, photo.height.value + borderSize, AnchorPosition.MIDDLECENTER);
            photo.resizeCanvas(photo.width.value, photo.height.value + borderBottomExtra, AnchorPosition.TOPCENTER);
            }

            //**************************
            function saveFlat(photo) {
            //**************************
            photo.flatten();
            photo.bitsPerChannel = BitsPerChannelType.EIGHT ;
            saveFile = new File(saveFolder + "\\" + photo.name);
            saveOptions = new JPEGSaveOptions();
            saveOptions.quality = 10;
            photo.saveAs(saveFile, saveOptions);
            }

            //************************
            function getExif(photo) {
            //************************
            function explodeArray(item, delimiter) {
            tempArray = new Array(1);
            var Count = 0;
            var tempString = new String(item);
            while (tempString.indexOf(delimiter)>0) {
            tempArray[Count] = tempString.substr(0,tempString.indexOf(delimiter)) ;
            tempString = tempString.substr(tempString.indexOf(delimiter)+1, tempString.length-tempString.indexOf(delimiter)+1);
            Count = Count+1
            }
            tempArray[Count] = tempString;
            return tempArray;
            }
            var exifData = photo.info.exif.toString();
            exifArray = explodeArray(exifData,",");

            for(n = 0; n < exifArray.length; n = n + 1 ) {
            if(exifArray[n] == "Model") {
            cameraModel = exifArray[n+1];
            }
            if(exifArray[n] == "Focal Length") {
            focalLength = parseInt(exifArray[n+1]);
            }
            if(exifArray[n].indexOf("Exposure Time") != -1) {
            exposureTime = exifArray[n+1];
            }
            if(exifArray[n].indexOf("F-Stop") != -1) {
            exposureAperture = exifArray[n+1];
            }
            if(exifArray[n].indexOf("ISO Speed Ratings") != -1) {
            sensitivity = exifArray[n+1];
            }
            if(exifArray[n].indexOf("Exposure Bias Value") != -1) {
            exposureComp = exifArray[n+1];
            }
            if(exifArray[n].indexOf("Date Time Original") != -1) {
            dateTaken = exifArray[n+1];
            var dateArray1 = dateTaken.split(" ", 2);
            dateTaken = dateArray1[0];
            var timeArray1 = dateArray1[1].split(":",2);
            timeTaken = timeArray1[0] + "u" + timeArray1[1]
            var dateArray2 = dateTaken.split(":");
            var monthsArray =["januari","februari","maart","april","mei","juni", "juli","augustus","september","oktober","november" ,"december"];
            dateTaken = dateArray2[2]+" "+monthsArray[dateArray2[1]-1]+" "+dateArray2[0];
            yearTaken = dateArray2[0];
            }
            if(exifArray[n].indexOf("Flash") != -1) {
            flash = parseInt(exifArray[n+1],10);
            }
            }
            }

            //*********************
            function addText(photo) {
            //*********************
            var headerSpace = 15;
            var footerSpace = 10;

            const copyrightSize = 12;
            const copyrightFont = "ArialMT";
            const copyrightColor = fotopicClr2;

            const infoSize = 12;
            const infoColor = fotopicClr2;
            const infoFont = "ArialMT";

            const titleSize = 23;
            const titleColor = fotopicClr2;
            const titleFont = "TimesNewRomanPS-BoldMT";

            // TITLE
            var titleLayer = photo.artLayers.add();
            titleLayer.kind = LayerKind.TEXT;
            if(title == "") {
            title = photo.name;
            }
            var TI = titleLayer.textItem;
            TI.position = [photo.width.value / 2, photo.height.value - borderBottomExtra + headerSpace];
            TI.contents = title;
            TI.font = titleFont;
            TI.size = titleSize;
            TI.color = titleColor;
            TI.justification = Justification.CENTER;
            // DATE
            var dateLayer = photo.artLayers.add();
            dateLayer.kind = LayerKind.TEXT;
            var TI = dateLayer.textItem;
            TI.position = [photo.width.value / 2, photo.height.value - borderBottomExtra + headerSpace + titleSize];
            TI.contents = dateTaken + " " + timeTaken;
            TI.font = titleFont;
            TI.size = titleSize - 5;
            TI.color = titleColor;
            TI.justification = Justification.CENTER;

            // COPYRIGHT
            var nameLayer = photo.artLayers.add();
            nameLayer.kind = LayerKind.TEXT;
            var copyrightText = "\u00A9" + yearTaken + " " + signature + "\u000D" + "http:\\\\jodeconinck.fotopic.net";
            var TI = nameLayer.textItem;
            TI.position = [photo.width.value - borderSize / 2, photo.height.value - footerSpace - copyrightSize];
            TI.contents = copyrightText;
            TI.font = copyrightFont;
            TI.size = copyrightSize;
            TI.color = copyrightColor;
            TI.justification = Justification.RIGHT;

            // INFO
            var infoLayer = photo.artLayers.add();
            infoLayer.kind = LayerKind.TEXT;
            var infoText = photo.name + " \u000D";
            infoText = infoText + exposureTime + " " + exposureAperture + " " + exposureComp + " " + " ISO" + sensitivity + " " + focalLength + "mm";
            var TI = infoLayer.textItem;
            TI.position = [borderSize / 2, photo.height.value - footerSpace - infoSize];
            TI.contents = infoText;
            TI.font = infoFont;
            TI.size = infoSize;
            TI.color = infoColor;

            var joLayer = photo.artLayers.add();
            joLayer.kind = LayerKind.TEXT;
            var joText = "Jo";
            var TI = joLayer.textItem;
            TI.position = [photo.width.value - borderSize / 2 - 10, photo.height.value - footerSpace - copyrightSize - 46];
            TI.contents = joText;
            TI.font = "RageItalicLetPlain";
            TI.size = 50;
            TI.color = white;
            TI.justification = Justification.RIGHT;
            joLayer.applyStyle(borderStyle);

            }
            Canon
            http://www.jodeconinck.be/

            Comment


            • #7
              Re: Help?: Lightroom 2 --&gt; Post Process Action : Photoshop Script

              Bedankt laavark !
              je hebt ook geen lenstypes toegevoegd :-)
              Last edited by viero; 31 december 2008, 13:36.

              Comment


              • #8
                Re: Help?: Lightroom 2 --&gt; Post Process Action : Photoshop Script

                Even on topic : ik zou hiervoor in PS een droplet maken.
                Dan moet je enkel nog je foto's erover slepen.
                Volledig automatiseren zal niet lukken denk ik.

                Comment


                • #9
                  Re: Help?: Lightroom 2 --&gt; Post Process Action : Photoshop Script

                  Ik heb eens een oplossing voor uw probleem uitgeprobeerd en het werkte bij mij.

                  Dit document legt uit dat je elke executable kunt laten runnen bij een export uit Lightroom. Een droplet is ook een executable en kun je er dus mee koppelen.
                  Bovendien als je op MAC wekt kunt je automator gebruiken om een complexe workflow te automatiseren.

                  Droplets werken vanuit actions.
                  We hebben hier evenwel te maken met een script.
                  Deze post suggereert dat je de werking van een script kunt laten opnemen in een action.

                  Edit: ik heb dit eens in de praktijk geprobeerd met een ander 'exif border script' en het werkte.


                  De action nam wel niet de inhoud van het script op. Enkel de actie van het runnen van het script op een bepaalde locatie.
                  Lijkt geen probleem zolang je het script niet van plaats verandert.
                  Van deze action dan een droplet gemaakt. Daarvan een snelkoppeling geplakt in de Export actions folder van lightroom.
                  Bij de export vanuit Lightroom de droplet aangeduid om te runnen bij postprocessing en voila de exif border werd aangemaakt.


                  Deze post stelt dat je vanuit bepaalde events via de script events manager een script kunt launchen. Als je via een action/droplet een event kunt launchen die dan uw script triggert, ben je er misschien ook.

                  Veel succes.
                  Last edited by PSG; 1 januari 2009, 12:15. Reden: oplossing uitgewerkt

                  Comment


                  • #10
                    Re: Help?: Lightroom 2 --&gt; Post Process Action : Photoshop Script

                    bedankt psg !

                    Comment


                    • #11
                      Re: Help?: Lightroom 2 --&gt; Post Process Action : Photoshop Script

                      Graag gedaan Viero.
                      Mooie site heb je daar !

                      Comment


                      • #12
                        Re: Help?: Lightroom 2 --&gt; Post Process Action : Photoshop Script

                        Droplets zijn dus het antwoord op mijn vraag !

                        Bedankt voor de input !
                        Canon
                        http://www.jodeconinck.be/

                        Comment

                        Working...
                        X