c.pfaffenbichler
Community Expert
c.pfaffenbichler
Community Expert
Activity
14 hours ago
https://helpx.adobe.com/enterprise/kb/network-endpoints.html
... View more
21 hours ago
Where did you get that code?
Edit: This would work with three Color Samplers.
// 2025, use it at your own risk;
// call the function to run the script;
createCurveAdjustmetFromColorSamplers();
// create a function fo hold most of the code;
function createCurveAdjustmetFromColorSamplers(){
// needs an open document in a color mode that supports layers;
if(app.documents.length == 0 || ( app.activeDocument.mode != DocumentMode.RGB ) ){
alert('This script requires a document in RGB');
return;
}
// check for three colorSamplers
if(app.activeDocument.colorSamplers.length != 3 ){
alert('This script requires three colorSamplers.');
return;
};
// for the bottom layer
var outputArray = new Array();
// store the number of samples because it will be needed in more than one place
var numberOfSamples = app.activeDocument.colorSamplers.length;
// collect the samples from the bottom layer
for(var sampleIndex = 0; sampleIndex < numberOfSamples; sampleIndex++ ){
outputArray.push(app.activeDocument.colorSamplers[sampleIndex].color);
}
// create arrays of the color values:
var theArray = [[], [], []];
for (var m = 0; m < outputArray.length; m++) {
theArray[0].push(Math.round(outputArray[m].rgb.red));
theArray[1].push(Math.round(outputArray[m].rgb.green));
theArray[2].push(Math.round(outputArray[m].rgb.blue));
};
// create the curves layer;
rgbCurvesLayer ([theArray[0], [0, 128, 255], theArray[1], [0, 128, 255], theArray[2], [0, 128, 255]])
};
////// make rgb curves layer //////
function rgbCurvesLayer (theArray) {
var idpresetKind = stringIDToTypeID( "presetKind" );
var idpresetKindType = stringIDToTypeID( "presetKindType" );
var idChnl = charIDToTypeID( "Chnl" );
var idCrv = charIDToTypeID( "Crv " );
var idCrvA = charIDToTypeID( "CrvA" );
var idAdjL = charIDToTypeID( "AdjL" );
// =======================================================
var desc5 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref2 = new ActionReference();
ref2.putClass( idAdjL );
desc5.putReference( idnull, ref2 );
var idUsng = charIDToTypeID( "Usng" );
var desc6 = new ActionDescriptor();
var idType = charIDToTypeID( "Type" );
var desc7 = new ActionDescriptor();
desc7.putEnumerated( idpresetKind, idpresetKindType, stringIDToTypeID( "presetKindDefault" ) );
desc6.putObject( idType, charIDToTypeID( "Crvs" ), desc7 );
var idAdjL = charIDToTypeID( "AdjL" );
desc5.putObject( idUsng, idAdjL, desc6 );
executeAction( charIDToTypeID( "Mk " ), desc5, DialogModes.NO );
// =======================================================
var desc8 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref3 = new ActionReference();
ref3.putEnumerated( idAdjL, charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) );
desc8.putReference( idnull, ref3 );
var idT = charIDToTypeID( "T " );
var desc9 = new ActionDescriptor();
desc9.putEnumerated( idpresetKind, idpresetKindType, stringIDToTypeID( "presetKindCustom" ) );
var idAdjs = charIDToTypeID( "Adjs" );
var list1 = new ActionList();
var desc10 = new ActionDescriptor();
var ref4 = new ActionReference();
ref4.putEnumerated( idChnl, idChnl, charIDToTypeID( "Rd " ) );
desc10.putReference( idChnl, ref4 );
var list2 = new ActionList();
// add r points;
for (var m = 0; m < theArray[0].length; m++) {
addCurvePoint (list2, theArray[0][m], theArray[1][m])
};
desc10.putList( idCrv, list2 );
list1.putObject( idCrvA, desc10 );
var desc15 = new ActionDescriptor();
var ref5 = new ActionReference();
ref5.putEnumerated( idChnl, idChnl, charIDToTypeID( "Grn " ) );
desc15.putReference( idChnl, ref5 );
var list3 = new ActionList();
// add g points;
for (var m = 0; m < theArray[2].length; m++) {
addCurvePoint (list3, theArray[2][m], theArray[3][m])
};
desc15.putList( idCrv, list3 );
list1.putObject( idCrvA, desc15 );
var desc20 = new ActionDescriptor();
var ref6 = new ActionReference();
ref6.putEnumerated( idChnl, idChnl, charIDToTypeID( "Bl " ) );
desc20.putReference( idChnl, ref6 );
var list4 = new ActionList();
// add b points;
for (var m = 0; m < theArray[4].length; m++) {
addCurvePoint (list4, theArray[4][m], theArray[5][m])
};
desc20.putList( idCrv, list4 );
list1.putObject( idCrvA, desc20 );
desc9.putList( idAdjs, list1 );
desc8.putObject( idT, charIDToTypeID( "Crvs" ), desc9 );
executeAction( charIDToTypeID( "setd" ), desc8, DialogModes.NO );
//
return app.activeDocument.activeLayer;
////// add curve point //////
function addCurvePoint (theList, valueHor, valueVer) {
var desc11 = new ActionDescriptor();
desc11.putDouble( charIDToTypeID( "Hrzn" ), valueHor );
desc11.putDouble( charIDToTypeID( "Vrtc" ), valueVer );
theList.putObject( charIDToTypeID( "Pnt " ), desc11 );
};
};
... View more
Mar 03, 2025
When you are sending data to Adobe servers (for Firefly-processing) that is data on Adobe servers, so guess what? Adobe has to try to make sure they are not involved in illegal activities and therefore needs to check.
That the check is extremely »sensitive« is another issue and hopefully it will be addressed sometime, but who knows?
Did you not figure out a work-around (cover up the person/s in the image with a Solid Color Layer temporarily for example before expanding)?
... View more
Mar 03, 2025
Could you please post screenshots with the pertinent Panels (Toolbar, Layers, Options Bar, Properties Panel, Contextul Task Bar, …) visible?
... View more
Mar 03, 2025
2 Upvotes
Could there be any typos or illegal characters in the csv file?
... View more
Mar 03, 2025
Please provide the layered image for testing.
... View more
‎Mar 03, 2025
09:16 AM
Can you post a screen-recording?
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Mar 03, 2025
09:10 AM
2 Upvotes
‎Mar 03, 2025
09:10 AM
2 Upvotes
When you record the action, DO NOT make changes to the folder or filename. if you do, those will be hardcoded into the action and used every time you run it. Which is how you got your file overwritten.
By @ExUSA
I suspect the original poster misunderstood what they actually recorded in the Action, that’s why I asked for the screenshot of the fully expanded Action.
... View more
‎Mar 03, 2025
09:05 AM
I mean the "generative workspace" window. Sometimes - not all the time - it just pops up and interferes with what I'm doing. I have *tried* to use it but it never seems to intuitively fill what I want, so I'd rather just disable it. For example, I wanted to fill in a couch leg that got cut off from the picture, and "generative workspace" gave me an iguana.
Isn’t the Generative Workspace part of Photoshop (Beta) and not of Photoshop?
Could you please post screenshots with the pertinent Panels (Toolbar, Layers, Properties, Options Bar, …) visible to illustrate?
... View more
‎Mar 03, 2025
09:02 AM
Doesn’t seem to be a terribly relevant topic for many of the regulars here.
Maybe you should post on the Bridge Forum.
What is your workflow, how many images are you trying to process, …?
... View more
‎Mar 03, 2025
08:29 AM
Please provide meaningful information, starting with a screenshot of the fully expanded Action in the Actions Panel.
... View more
‎Mar 03, 2025
07:11 AM
Have you tried unchecking Preferences > Tools > »Show Tooltips« and »Show Rich Tooltips«?
If the Selection or any other operation does not correspond to the actual cursor position I would recommend all-purpose trouble-shooting. Restoring Preferences after making sure all customized presets like Actions, Patterns, Brushes etc. have been saved might be a good starting point: https://helpx.adobe.com/photoshop/using/preferences.html https://helpx.adobe.com/photoshop/kb/basic-trouble-shooting-steps.html https://helpx.adobe.com/photoshop/kb/troubleshoot-gpu-graphics-card.html
... View more
‎Mar 03, 2025
03:10 AM
So you are suing the Single Column Marquee Tool? Then what happens exactly?
Could you please post screenshots with the pertinent Panels (Toolbar, Layers, Options Bar, Properties Panel, Contextual Task Bar, …) visible?
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Mar 03, 2025
01:38 AM
1 Upvote
‎Mar 03, 2025
01:38 AM
1 Upvote
The Masking for the two similar images is automatic (Edit > Auto-Blend Layers), the Masking for the dark exposure is manual. (plus a Blend If-setting)
... View more
‎Mar 03, 2025
12:20 AM
I am afraid at current you can either use Classic Gradient or the »new« Gradient (with a work-around like you mentioned).
But it seems there is something that seems like a bug in the »new« Gradient.
If I create a Gradient on the Mask, select the Brush Tool and paint into it, select the Gradient Tool again and edit the Gradient the Brush stroke is simply removed.
... View more
‎Mar 02, 2025
11:23 PM
Those three images seem unfit for focus stacking because the settings were so brutally different and unfit for HDR merging because of the changed focus.
But the two images that are actually similar seem to more-or-less work out with »Auto-Blend Layers«, I would recommend masking the third manually afterwards.
... View more
‎Mar 02, 2025
11:06 PM
In my opinion one should simply not use tabbed view … but I am a Mac-user.
Please post screenshots to clarify.
... View more
‎Mar 02, 2025
08:31 AM
Are you using tabbed View or floating windows?
Please post screenshots to clarify.
... View more
‎Mar 02, 2025
08:29 AM
Are you trying to edit the Layer Mask or create a new Adjustment Layer?
... View more
‎Mar 02, 2025
08:20 AM
How are you trying to separate them?
Click-keep clicked the name-field and drag it?
... View more
‎Mar 02, 2025
08:17 AM
Could you please post screenshots with the pertinent Panels (Toolbar, Layers, Options Bar, Properties, …) visible?
Have you tried »Classic Gradient«?
... View more
‎Mar 02, 2025
08:13 AM
1 Upvote
Could one of your input devices be involved?
If you have access to a second computer could you switch out the keyboard and mouse/tablet for testing?
... View more
‎Mar 02, 2025
08:07 AM
Did you want to destroy the editable type-content by converting it to Shape Layers? (Type > Convert to Shape)
... View more
‎Mar 02, 2025
08:04 AM
Can you please provide the images?
... View more
‎Mar 02, 2025
08:01 AM
Does turning off »Use Graphics Processor« in the Performance Preferences (Photoshop > Preferences > Performance > Graphic Processor Settings) and restarting Photoshop have any bearing on the issue? https://helpx.adobe.com/photoshop/kb/troubleshoot-gpu-graphics-card.html
Do you use the Homescreen?
... View more
‎Mar 02, 2025
07:34 AM
If you just want a second display of the same image (that you can zoom in/out, use the Rotate View Tool on, …) you can use
Window> Arrange > New Window for …
... View more
‎Mar 02, 2025
07:12 AM
// tries to create a file comparing all pages of two cmyk-pdfs;
// 2025, use it at your own risk;
/* dialog for pdf-selection */
if (ScriptUI.environment.keyboardState.shiftKey == true) {var theRes = 300}
else {var theRes = 150};
var theFile1 = File.openDialog("please select the first pdf", checkForPDF, false);
var theFile2 = File.openDialog("please select the second pdf", checkForPDF, false);
if (theFile1 && theFile2) {
/* the open options */
var pdfOpenOpts = new PDFOpenOptions;
pdfOpenOpts.antiAlias = true;
pdfOpenOpts.bitsPerChannel = BitsPerChannelType.EIGHT;
pdfOpenOpts.cropPage = CropToType.TRIMBOX;
pdfOpenOpts.mode = OpenDocumentMode.CMYK;
pdfOpenOpts.resolution = theRes;
pdfOpenOpts.suppressWarnings = true;
pdfOpenOpts.usePageNumber = true;
var thePdf = compareMultipagePDF(theFile1, theFile2, pdfOpenOpts);
revealAll ();
};
/* function to compare all pages of two pdfs */
function compareMultipagePDF(myPDFFile1, myPDFFile2) {
var secondShorter = false;
/* suppress dialogs */
var theDialogSettings = app.displayDialogs;
app.displayDialogs = DialogModes.NO;
var myCounter = 1;
var myBreak = false;
while(myBreak == false){
pdfOpenOpts.page = myCounter;
try {
var thePdf = app.open(myPDFFile1, pdfOpenOpts);
thePdf.flatten();
thePdf.layers[0].isBackgroundLayer = false;
thePdf.layers[0].name = myPDFFile1.name+"_"+myCounter;
if (myCounter == 1) {
var theFile = thePdf
}
else {
thePdf.layers[0].duplicate(theFile, ElementPlacement.PLACEATBEGINNING);
thePdf.close(SaveOptions.DONOTSAVECHANGES)
};
try {
var theSecondPdf = app.open(myPDFFile2, pdfOpenOpts);
theSecondPdf.flatten();
theSecondPdf.layers[0].isBackgroundLayer = false;
theSecondPdf.layers[0].name = myPDFFile2.name+"_"+myCounter;
theSecondPdf.layers[0].duplicate(theFile, ElementPlacement.PLACEATBEGINNING);
theSecondPdf.close(SaveOptions.DONOTSAVECHANGES);
var theSecond = activeDocument.activeLayer;
theSecond.blendMode = BlendMode.DIFFERENCE;
var id556 = charIDToTypeID( "GrpL" );
executeAction( id556, undefined, DialogModes.NO );
// mark differences;
mergVisibleToNewLayer();
var theBlendIfThisArray = [ [9,9,255,255], [0,0,255,255], [0,0,255,255], [0,0,255,255] ];
var theBlendIfUnderlyingArray = [ [0,0,255,255], [0,0,255,255], [0,0,255,255], [0,0,255,255] ];
blendIfThisAndUnderlying (theBlendIfThisArray, theBlendIfUnderlyingArray);
activeDocument.activeLayer.applyMaximum(10);
cmykChannelMixer();
groupSelectedLayers (myCounter);
activeDocument.activeLayer.merge();
var theGroup = activeDocument.activeLayer;
//applyLayerStyleStroke(5, 255, 0, 0);
applyColorOverlay (255, 0, 0);
theGroup.fillOpacity = 0;
theSecond.blendMode = BlendMode.NORMAL;
}
catch (e) {secondShorter = true}
}
catch (e) {
try {
var theSecondPdf = app.open(myPDFFile2, pdfOpenOpts);
theSecondPdf.close(SaveOptions.DONOTSAVECHANGES);
alert (theFile2.name+" seems to have more pages than "+theFile1.name)
}
catch (e) {}
myBreak = true
};
myCounter = myCounter + 1;
};
if (secondShorter == true) {alert (theFile1.name+" seems to have more pages than "+theFile2.name)};
/* reset dialogmodes */
app.displayDialogs = DialogModes.ERROR;
};
/* open pdf page */
function openPDFPage (myPDFFile, pdfOpenOpts, myCounter) {
var thePdf = app.open(myPDFFile, pdfOpenOpts);
thePdf.flatten();
thePdf.layers[0].isBackgroundLayer = false;
thePdf.layers[0].name = myPDFFile.name+"_"+myCounter;
return thePdf
};
/* filter-function for pdf-files */
function checkForPDF (theFile) {
if (theFile.name.slice(-4) == ".pdf" || theFile.constructor.name == "Folder") {return true}
else {return false}
};
////// reveal all //////
function revealAll () {
var idRvlA = charIDToTypeID( "RvlA" );
executeAction( idRvlA, undefined, DialogModes.NO );
};
////// layer via copy //////
function mergVisibleToNewLayer (){
var desc23 = new ActionDescriptor();
desc23.putBoolean( stringIDToTypeID( "duplicate" ), true );
executeAction( stringIDToTypeID( "mergeVisible" ), desc23, DialogModes.NO );
};
////// group //////
function groupSelectedLayers (theName) {
var desc159 = new ActionDescriptor();
var ref114 = new ActionReference();
var idlayer = stringIDToTypeID( "layer" );
var idordinal = stringIDToTypeID( "ordinal" );
var idtargetEnum = stringIDToTypeID( "targetEnum" );
var idnull = stringIDToTypeID( "null" );
var idname = stringIDToTypeID( "name" );
ref114.putEnumerated(idlayer, idordinal, idtargetEnum);
desc159.putReference(idnull, ref114 );
desc159.putString(idname, "aaa" );
executeAction( stringIDToTypeID( "groupLayersEvent" ), desc159, DialogModes.NO );
var desc63 = new ActionDescriptor();
var ref37 = new ActionReference();
ref37.putEnumerated( idlayer, idordinal, idtargetEnum );
desc63.putReference( idnull, ref37 );
var desc64 = new ActionDescriptor();
desc64.putString(idname, theName);
desc63.putObject(stringIDToTypeID( "to" ), idlayer, desc64);
executeAction(stringIDToTypeID( "set" ), desc63, DialogModes.NO)
};
////// make stroke //////
function applyLayerStyleStroke (theWitdh, theR, theG, theB) {
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc12 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref7 = new ActionReference();
var idPrpr = charIDToTypeID( "Prpr" );
var idLefx = charIDToTypeID( "Lefx" );
ref7.putProperty( idPrpr, idLefx );
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref7.putEnumerated( idLyr, idOrdn, idTrgt );
desc12.putReference( idnull, ref7 );
var idT = charIDToTypeID( "T " );
var desc13 = new ActionDescriptor();
var idScl = charIDToTypeID( "Scl " );
var idPrc = charIDToTypeID( "#Prc" );
desc13.putUnitDouble( idScl, idPrc, 100.000000 );
var idFrFX = charIDToTypeID( "FrFX" );
var desc14 = new ActionDescriptor();
var idenab = charIDToTypeID( "enab" );
desc14.putBoolean( idenab, true );
var idStyl = charIDToTypeID( "Styl" );
var idFStl = charIDToTypeID( "FStl" );
desc14.putEnumerated( idStyl, idFStl, charIDToTypeID( "OutF" ) );
var idPntT = charIDToTypeID( "PntT" );
var idFrFl = charIDToTypeID( "FrFl" );
var idSClr = charIDToTypeID( "SClr" );
desc14.putEnumerated( idPntT, idFrFl, idSClr );
var idMd = charIDToTypeID( "Md " );
var idBlnM = charIDToTypeID( "BlnM" );
var idNrml = charIDToTypeID( "Nrml" );
desc14.putEnumerated( idMd, idBlnM, idNrml );
var idOpct = charIDToTypeID( "Opct" );
var idPrc = charIDToTypeID( "#Prc" );
desc14.putUnitDouble( idOpct, idPrc, 100.000000 );
var idSz = charIDToTypeID( "Sz " );
var idPxl = charIDToTypeID( "#Pxl" );
desc14.putUnitDouble( idSz, idPxl, theWitdh );
var idClr = charIDToTypeID( "Clr " );
var desc15 = new ActionDescriptor();
var idRd = charIDToTypeID( "Rd " );
desc15.putDouble( idRd, theR );
var idGrn = charIDToTypeID( "Grn " );
desc15.putDouble( idGrn, theG );
var idBl = charIDToTypeID( "Bl " );
desc15.putDouble( idBl, theB );
var idRGBC = charIDToTypeID( "RGBC" );
desc14.putObject( idClr, idRGBC, desc15 );
var idFrFX = charIDToTypeID( "FrFX" );
desc13.putObject( idFrFX, idFrFX, desc14 );
var idLefx = charIDToTypeID( "Lefx" );
desc12.putObject( idT, idLefx, desc13 );
executeAction( idsetd, desc12, DialogModes.NO );
};
////// set blend if settings for this and underlying //////
function blendIfThisAndUnderlying (thisNumbers, underlyingNumbers) {
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc11 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref8 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref8.putEnumerated( idLyr, idOrdn, idTrgt );
desc11.putReference( idnull, ref8 );
var idT = charIDToTypeID( "T " );
var desc12 = new ActionDescriptor();
var idBlnd = charIDToTypeID( "Blnd" );
var list3 = new ActionList();
var desc13 = new ActionDescriptor();
var idChnl = charIDToTypeID( "Chnl" );
var ref9 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idChnl = charIDToTypeID( "Chnl" );
var idGry = charIDToTypeID( "Gry " );
ref9.putEnumerated( idChnl, idChnl, idGry );
desc13.putReference( idChnl, ref9 );
var idSrcB = charIDToTypeID( "SrcB" );
desc13.putInteger( idSrcB, thisNumbers[0][0] );
var idSrcl = charIDToTypeID( "Srcl" );
desc13.putInteger( idSrcl, thisNumbers[0][1] );
var idSrcW = charIDToTypeID( "SrcW" );
desc13.putInteger( idSrcW, thisNumbers[0][2] );
var idSrcm = charIDToTypeID( "Srcm" );
desc13.putInteger( idSrcm, thisNumbers[0][3] );
var idDstB = charIDToTypeID( "DstB" );
desc13.putInteger( idDstB, underlyingNumbers[0][0] );
var idDstl = charIDToTypeID( "Dstl" );
desc13.putInteger( idDstl, underlyingNumbers[0][1] );
var idDstW = charIDToTypeID( "DstW" );
desc13.putInteger( idDstW, underlyingNumbers[0][2] );
var idDstt = charIDToTypeID( "Dstt" );
desc13.putInteger( idDstt, underlyingNumbers[0][3] );
var idBlnd = charIDToTypeID( "Blnd" );
list3.putObject( idBlnd, desc13 );
/*var desc14 = new ActionDescriptor();
var idChnl = charIDToTypeID( "Chnl" );
var ref10 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idChnl = charIDToTypeID( "Chnl" );
var idRd = charIDToTypeID( "Rd " );
ref10.putEnumerated( idChnl, idChnl, idRd );
desc14.putReference( idChnl, ref10 );
var idSrcB = charIDToTypeID( "SrcB" );
desc14.putInteger( idSrcB, thisNumbers[1][0] );
var idSrcl = charIDToTypeID( "Srcl" );
desc14.putInteger( idSrcl, thisNumbers[1][1] );
var idSrcW = charIDToTypeID( "SrcW" );
desc14.putInteger( idSrcW, thisNumbers[1][2] );
var idSrcm = charIDToTypeID( "Srcm" );
desc14.putInteger( idSrcm, thisNumbers[1][3] );
var idDstB = charIDToTypeID( "DstB" );
desc14.putInteger( idDstB, underlyingNumbers[1][0] );
var idDstl = charIDToTypeID( "Dstl" );
desc14.putInteger( idDstl, underlyingNumbers[1][1] );
var idDstW = charIDToTypeID( "DstW" );
desc14.putInteger( idDstW, underlyingNumbers[1][2] );
var idDstt = charIDToTypeID( "Dstt" );
desc14.putInteger( idDstt, underlyingNumbers[1][3] );
var idBlnd = charIDToTypeID( "Blnd" );
list3.putObject( idBlnd, desc14 );
var desc15 = new ActionDescriptor();
var idChnl = charIDToTypeID( "Chnl" );
var ref11 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idChnl = charIDToTypeID( "Chnl" );
var idGrn = charIDToTypeID( "Grn " );
ref11.putEnumerated( idChnl, idChnl, idGrn );
desc15.putReference( idChnl, ref11 );
var idSrcB = charIDToTypeID( "SrcB" );
desc15.putInteger( idSrcB, thisNumbers[2][0] );
var idSrcl = charIDToTypeID( "Srcl" );
desc15.putInteger( idSrcl, thisNumbers[2][1] );
var idSrcW = charIDToTypeID( "SrcW" );
desc15.putInteger( idSrcW, thisNumbers[2][2] );
var idSrcm = charIDToTypeID( "Srcm" );
desc15.putInteger( idSrcm, thisNumbers[2][3] );
var idDstB = charIDToTypeID( "DstB" );
desc15.putInteger( idDstB, underlyingNumbers[2][0] );
var idDstl = charIDToTypeID( "Dstl" );
desc15.putInteger( idDstl, underlyingNumbers[2][1] );
var idDstW = charIDToTypeID( "DstW" );
desc15.putInteger( idDstW, underlyingNumbers[2][2] );
var idDstt = charIDToTypeID( "Dstt" );
desc15.putInteger( idDstt, underlyingNumbers[2][3] );
var idBlnd = charIDToTypeID( "Blnd" );
list3.putObject( idBlnd, desc15 );
var desc16 = new ActionDescriptor();
var idChnl = charIDToTypeID( "Chnl" );
var ref12 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idChnl = charIDToTypeID( "Chnl" );
var idBl = charIDToTypeID( "Bl " );
ref12.putEnumerated( idChnl, idChnl, idBl );
desc16.putReference( idChnl, ref12 );
var idSrcB = charIDToTypeID( "SrcB" );
desc16.putInteger( idSrcB, thisNumbers[3][0] );
var idSrcl = charIDToTypeID( "Srcl" );
desc16.putInteger( idSrcl, thisNumbers[3][1] );
var idSrcW = charIDToTypeID( "SrcW" );
desc16.putInteger( idSrcW, thisNumbers[3][2] );
var idSrcm = charIDToTypeID( "Srcm" );
desc16.putInteger( idSrcm, thisNumbers[3][3] );
var idDstB = charIDToTypeID( "DstB" );
desc16.putInteger( idDstB, underlyingNumbers[3][0] );
var idDstl = charIDToTypeID( "Dstl" );
desc16.putInteger( idDstl, underlyingNumbers[3][1] );
var idDstW = charIDToTypeID( "DstW" );
desc16.putInteger( idDstW, underlyingNumbers[3][2] );
var idDstt = charIDToTypeID( "Dstt" );
desc16.putInteger( idDstt, underlyingNumbers[3][3] );
var idBlnd = charIDToTypeID( "Blnd" );
list3.putObject( idBlnd, desc16 );*/
desc12.putList( idBlnd, list3 );
var idLefx = charIDToTypeID( "Lefx" );
var desc17 = new ActionDescriptor();
var idScl = charIDToTypeID( "Scl " );
var idPrc = charIDToTypeID( "#Prc" );
desc17.putUnitDouble( idScl, idPrc, 423.333316 );
var idLefx = charIDToTypeID( "Lefx" );
desc12.putObject( idLefx, idLefx, desc17 );
var idLyr = charIDToTypeID( "Lyr " );
desc11.putObject( idT, idLyr, desc12 );
executeAction( idsetd, desc11, DialogModes.NO );
};
////// channel mixer //////
function cmykChannelMixer () {
var idpercentUnit = stringIDToTypeID( "percentUnit" );
var idchannelMixer = stringIDToTypeID( "channelMixer" );
var desc5 = new ActionDescriptor();
var idpresetKind = stringIDToTypeID( "presetKind" );
var idpresetKindType = stringIDToTypeID( "presetKindType" );
var idpresetKindCustom = stringIDToTypeID( "presetKindCustom" );
desc5.putEnumerated( idpresetKind, idpresetKindType, idpresetKindCustom );
var idmonochromatic = stringIDToTypeID( "monochromatic" );
desc5.putBoolean( idmonochromatic, true );
var idgray = stringIDToTypeID( "gray" );
var desc6 = new ActionDescriptor();
var idcyan = stringIDToTypeID( "cyan" );
desc6.putUnitDouble( idcyan, idpercentUnit, 25.000000 );
var idmagenta = stringIDToTypeID( "magenta" );
desc6.putUnitDouble( idmagenta, idpercentUnit, 25.000000 );
var idyellowColor = stringIDToTypeID( "yellowColor" );
desc6.putUnitDouble( idyellowColor, idpercentUnit, 25.000000 );
var idblack = stringIDToTypeID( "black" );
desc6.putUnitDouble( idblack, idpercentUnit, 25.000000 );
var idchannelMatrix = stringIDToTypeID( "channelMatrix" );
desc5.putObject( idgray, idchannelMatrix, desc6 );
executeAction( idchannelMixer, desc5, DialogModes.NO );
};
////// color overlay //////
function applyColorOverlay (theR, theG, theB) {
//selectLayerByID(myLayer, false);
// =======================================================
var desc5 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putProperty( stringIDToTypeID( "property" ), stringIDToTypeID( "layerEffects" ) );
var idlayer = stringIDToTypeID( "layer" );
var idordinal = stringIDToTypeID( "ordinal" );
var idtargetEnum = stringIDToTypeID( "targetEnum" );
ref1.putEnumerated( idlayer, idordinal, idtargetEnum );
// ref1.putIdentifier( idlayer, myLayer );
desc5.putReference( stringIDToTypeID( "null" ), ref1 );
var desc6 = new ActionDescriptor();
var idscale = stringIDToTypeID( "scale" );
var idpercentUnit = stringIDToTypeID( "percentUnit" );
desc6.putUnitDouble( idscale, idpercentUnit, 416.666667 );
var desc7 = new ActionDescriptor();
var idenabled = stringIDToTypeID( "enabled" );
desc7.putBoolean( idenabled, true );
var idpresent = stringIDToTypeID( "present" );
desc7.putBoolean( idpresent, true );
var idshowInDialog = stringIDToTypeID( "showInDialog" );
desc7.putBoolean( idshowInDialog, true );
desc7.putEnumerated( stringIDToTypeID( "mode" ), stringIDToTypeID( "blendMode" ), stringIDToTypeID( "normal" ) );
var idcolor = stringIDToTypeID( "color" );
var desc8 = new ActionDescriptor();
var idred = stringIDToTypeID( "red" );
desc8.putDouble( idred, theR );
var idgrain = stringIDToTypeID( "grain" );
desc8.putDouble( idgrain, theG );
var idblue = stringIDToTypeID( "blue" );
desc8.putDouble( idblue, theB );
desc7.putObject( idcolor, stringIDToTypeID( "RGBColor" ), desc8 );
var idpercentUnit = stringIDToTypeID( "percentUnit" );
desc7.putUnitDouble( stringIDToTypeID( "opacity" ), idpercentUnit, 100.000000 );
desc6.putObject( stringIDToTypeID( "solidFill" ), stringIDToTypeID( "solidFill" ), desc7 );
desc5.putObject( stringIDToTypeID( "to" ), stringIDToTypeID( "layerEffects" ), desc6 );
executeAction( stringIDToTypeID( "set" ), desc5, DialogModes.NO );
};
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 28, 2025
07:24 AM
2 Upvotes
‎Feb 28, 2025
07:24 AM
2 Upvotes
The image you posted does not seem to have passed the virus-scan so far.
Clipping elements from photographic images is (or at least can be) a serious task and full automation may not be reasonably expectable.
The use of Word for page-layout seems inappropriate to me.
But you probably have little influence on this, so you may have to provide pngs for images with transparency.
... View more
‎Feb 28, 2025
07:13 AM
The functionality is already old, so I suppose it may be part of the Photoshop-code itself or be a plugin, the internal workings of which we have no access to.
And while I suspect it makes the determination of the relevant snippets’ positions and angles in a clever way, it could employ an outdated approach by today’s standards.
I would recommend that you post a Featuer Request (mark it »Idea« instead of »Discussion«).
That would be bound to register at Adobe (even if you should get no feedback).
But please try to explain (and accompany with sketches/mock-ups) what you would actually want to get – a dialog/Panel with customizable settings for padding of the isolated elements, just one menu item that rotates an image (if so what should it do if more than one »clip-worthy« element is identfied in the image), …?
... View more
‎Feb 28, 2025
04:23 AM
It is possible but I probably won’t have time to look into that this week.
... View more