loonghao / photoshop-python-api

Python API for Photoshop.
https://loonghao.github.io/photoshop-python-api/
MIT License
621 stars 71 forks source link

How to create a color look up layer and load a 3D Lut file #201

Open skeleturtle opened 1 year ago

skeleturtle commented 1 year ago

pretty much what the title says, is it possible to create a color look up layer and load a 3D lut file?

loonghao commented 1 year ago

@skeleturtle Sure, I'll find time over the weekend to write an example for you

loonghao commented 1 year ago

@skeleturtle The following code can help you create colorlookup layer, for the action of load LUT, I have not found the code that can be executed correctly

from photoshop import Session

with Session() as api:
    app = api.app
    idMk = app.charIDToTypeID("Mk  ")
    desc291 = api.ActionDescriptor()
    idnull = app.charIDToTypeID("null")
    ref28 = api.ActionReference()
    idAdjL = app.charIDToTypeID("AdjL")
    ref28.putClass(idAdjL)
    desc291.putReference(idnull, ref28)
    idUsng = app.charIDToTypeID("Usng")
    desc292 = api.ActionDescriptor()
    idType = app.charIDToTypeID("Type")
    idcolorLookup = app.stringIDToTypeID("colorLookup")
    desc292.putClass(idType, idcolorLookup)
    idAdjL = app.charIDToTypeID("AdjL")
    desc291.putObject(idUsng, idAdjL, desc292)
    app.executeAction( idMk, desc291)

load 3Dlut from JS

var idMk = charIDToTypeID( "Mk  " );
    var desc45 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref14 = new ActionReference();
        var idAdjL = charIDToTypeID( "AdjL" );
        ref14.putClass( idAdjL );
    desc45.putReference( idnull, ref14 );
    var idUsng = charIDToTypeID( "Usng" );
        var desc46 = new ActionDescriptor();
        var idType = charIDToTypeID( "Type" );
        var idcolorLookup = stringIDToTypeID( "colorLookup" );
        desc46.putClass( idType, idcolorLookup );
    var idAdjL = charIDToTypeID( "AdjL" );
    desc45.putObject( idUsng, idAdjL, desc46 );
executeAction( idMk, desc45, DialogModes.NO );
var idsetd = charIDToTypeID( "setd" );
    var desc49 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref15 = new ActionReference();
        var idAdjL = charIDToTypeID( "AdjL" );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref15.putEnumerated( idAdjL, idOrdn, idTrgt );
    desc49.putReference( idnull, ref15 );
    var idT = charIDToTypeID( "T   " );
        var desc50 = new ActionDescriptor();
        var idlookupType = stringIDToTypeID( "lookupType" );
        var idcolorLookupType = stringIDToTypeID( "colorLookupType" );
        var idthreeDLUT = stringIDToTypeID( "3DLUT" );
        desc50.putEnumerated( idlookupType, idcolorLookupType, idthreeDLUT );
        var idNm = charIDToTypeID( "Nm  " );
        desc50.putString( idNm, """your/3dlut/file.cube""" );
        var idprofile = stringIDToTypeID( "profile" );
        var idLUTFormat = stringIDToTypeID( "LUTFormat" );
        var idLUTFormatType = stringIDToTypeID( "LUTFormatType" );
        var idLUTFormatCUBE = stringIDToTypeID( "LUTFormatCUBE" );
        desc50.putEnumerated( idLUTFormat, idLUTFormatType, idLUTFormatCUBE );
        var idLUTthreeDFileData = stringIDToTypeID( "LUT3DFileData" );
        var idLUTthreeDFileName = stringIDToTypeID( "LUT3DFileName" );
        desc50.putString( idLUTthreeDFileName, """your/3dlut/file.cube"""   );
    var idcolorLookup = stringIDToTypeID( "colorLookup" );
    desc49.putObject( idT, idcolorLookup, desc50 );
executeAction( idsetd, desc49, DialogModes.NO );