Scripting new ACR adaptive presets for Photoshop using

Anyone, especially newbies, asking for help with Photoshop Scripting and Photoshop Automation - as opposed to those contributing to discussion about an aspect of Photoshop Scripting

Moderators: Tom, Kukurykus

IgorBul
Posts: 1
Joined: Sun Sep 03, 2023 5:12 pm

Scripting new ACR adaptive presets for Photoshop using

Post by IgorBul »

ACR 15 has great AI tools for selecting people and objects and the ability to create adaptive presets for masking, such as the whites of the eyes, hair, skin of the face, body.
These presets work great in Bridge under the Develop menu. Trying to write it to an Action (or script):
Calling action or script on a new image creates masks from the image used for recording Action.

Is it possible to call preset for correct work on a new image?

Here is an example:

cTID = function(s) { return app.charIDToTypeID(s); };
sTID = function(s) { return app.stringIDToTypeID(s); };

function CameraSel() {
// Camera Raw Filter
function CameraSel_001(enabled, withDialog) {
if (enabled != undefined && !enabled)
return;
var dialogMode = (withDialog ? DialogModes.ALL : DialogModes.NO);
var mydesc = new ActionDescriptor();
mydesc.putString(cTID('CrVe'), "15.5.1");
mydesc.putInteger(cTID('PrVN'), 6);
mydesc.putInteger(cTID('PrVe'), 251920384);
mydesc.putString(cTID('LCs '), "<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"Adobe XMP Core 7.0-c000 1.000000, 0000/00/00-00:00:00 \">\n <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <rdf:Description rdf:about=\"\"\n xmlns:crs=\"http://ns.adobe.com/camera-raw-settings/1.0/\">\n <crs:MaskGroupBasedCorrections>\n <rdf:Seq>\n <rdf:li>\n <rdf:Description\n crs:What=\"Correction\"\n crs:CorrectionAmount=\"1\"\n crs:CorrectionActive=\"true\"\n crs:CorrectionName=\"People - Facial Skin\"\n crs:CorrectionSyncID=\"4F5180FC68E4493C8EDECF4F9CFD821E\"\n crs:LocalHue=\"-0.346044\"\n crs:LocalSaturation=\"1\"\n crs:LocalToningHue=\"0\"\n crs:LocalToningSaturation=\"1\"\n crs:LocalExposure2012=\"0\"\n crs:LocalTemperature=\"1\"\n crs:LocalCurveRefineSaturation=\"100\">\n <crs:CorrectionMasks>\n <rdf:Seq>\n <rdf:li\n crs:What=\"Mask/Image\"\n crs:MaskActive=\"true\"\n crs:MaskName=\"Facial Skin\"\n crs:MaskBlendMode=\"0\"\n crs:MaskInverted=\"false\"\n crs:MaskSyncID=\"652A8622B17140898C8F49B97F2B5DDA\"\n crs:MaskValue=\"1\"\n crs:MaskVersion=\"1\"\n crs:MaskSubType=\"3\"\n crs:MaskSubCategoryID=\"2\"\n crs:ReferencePoint=\"0.496094 0.457478\"\n crs:InputDigest=\"481D664F03D3BE00CA2D26C190FECDDE\"\n crs:InputDigestVersion=\"2\"\n crs:MaskDigest=\"38F99F2A27BDEDD29B4CC752724926F1\"\n crs:WholeImageArea=\"0/1,0/1,1920/1,2880/1\"\n crs:Origin=\"1322,668\"\n crs:ModelVersion=\"234881976\"/>\n </rdf:Seq>\n </crs:CorrectionMasks>\n </rdf:Description>\n </rdf:li>\n </rdf:Seq>\n </crs:MaskGroupBasedCorrections>\n </rdf:Description>\n </rdf:RDF>\n</x:xmpmeta>\n");
mydesc.putString(cTID('Pset'), "<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"Adobe XMP Core 7.0-c000 1.000000, 0000/00/00-00:00:00 \">\n <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <rdf:Description rdf:about=\"\"\n xmlns:crs=\"http://ns.adobe.com/camera-raw-settings/1.0/\">\n <crs:Preset>\n <rdf:Description\n crs:Name=\"Red Faces\"\n crs:Amount=\"1\"\n crs:UUID=\"B37D60A85DAF46849854265F32500C24\">\n <crs:Parameters>\n <rdf:Description\n crs:Version=\"15.5.1\"\n crs:CompatibleVersion=\"251658240\"\n crs:ProcessVersion=\"15.4\">\n <crs:MaskGroupBasedCorrections>\n <rdf:Seq>\n <rdf:li>\n <rdf:Description\n crs:What=\"Correction\"\n crs:CorrectionAmount=\"1\"\n crs:CorrectionActive=\"true\"\n crs:CorrectionName=\"People - Facial Skin\"\n crs:CorrectionSyncID=\"4F5180FC68E4493C8EDECF4F9CFD821E\"\n crs:LocalHue=\"-0.346044\"\n crs:LocalSaturation=\"1\"\n crs:LocalToningHue=\"0\"\n crs:LocalToningSaturation=\"1\"\n crs:LocalExposure2012=\"0\"\n crs:LocalTemperature=\"1\"\n crs:LocalCurveRefineSaturation=\"100\">\n <crs:CorrectionMasks>\n <rdf:Seq>\n <rdf:li\n crs:What=\"Mask/Image\"\n crs:MaskActive=\"true\"\n crs:MaskName=\"Facial Skin\"\n crs:MaskBlendMode=\"0\"\n crs:MaskInverted=\"false\"\n crs:MaskSyncID=\"652A8622B17140898C8F49B97F2B5DDA\"\n crs:MaskValue=\"1\"\n crs:MaskVersion=\"1\"\n crs:MaskSubType=\"3\"\n crs:MaskSubCategoryID=\"2\"\n crs:ReferencePoint=\"0.500000 0.500000\"\n crs:ErrorReason=\"0\"/>\n </rdf:Seq>\n </crs:CorrectionMasks>\n </rdf:Description>\n </rdf:li>\n </rdf:Seq>\n </crs:MaskGroupBasedCorrections>\n </rdf:Description>\n </crs:Parameters>\n </rdf:Description>\n </crs:Preset>\n </rdf:Description>\n </rdf:RDF>\n</x:xmpmeta>\n");
var _hexToBin =
function (h) {
function binMap(n) {
if (n.match(/[0-9]/)) return parseInt(n);
return parseInt((n.charCodeAt(0) - 'A'.charCodeAt(0)) + 10);
}

h = h.toUpperCase().replace(/\s/g, '');
var bytes = '';

for (var i = 0; i < h.length/2; i++) {
var hi = h.charAt(i * 2);
var lo = h.charAt(i * 2 + 1);
var b = (binMap(hi) << 4) + binMap(lo);
bytes += String.fromCharCode(b);
}
return bytes;
}
;
mydesc.putData(cTID('BigT'), _hexToBin( "414352000100000000000000010000000000000038F99F2A27BDEDD29B4CC752" +
"724926F100B70000000000003400000000000000020000000100000000000000" +
"0000000049492A00080000000C00FE0004000100000000000000000104000100" +
//!!!............... 1200 lines of byte array
"00006F0100000101040001000000A401000002010
"01C3E32629540D10C6A27F609EFE2F39B0BAFE00" +
""
));
executeAction(sTID('Adobe Camera Raw Filter'), mydesc, dialogMode);
};

CameraSel_001(); // Camera Raw Filter
};


CameraSel.main = function () {
CameraSel();
};

CameraSel.main();