
Chuck Uebele
Community Expert
Chuck Uebele
Community Expert
Activity
‎Feb 20, 2025
08:11 AM
Does the posterize filter not work for you? This is still available under the image>adjustments menu.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 19, 2025
12:47 PM
2 Upvotes
‎Feb 19, 2025
12:47 PM
2 Upvotes
Maybe reset your preferences. The search should be at the top.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 19, 2025
12:38 PM
1 Upvote
‎Feb 19, 2025
12:38 PM
1 Upvote
I definitely agree with @Conrad_C: trying to fake it in PS is going to take a lot of time and never look great. If you are actually shooting the images, too, I would suggest you get some cheap remote flashes that you can put around the house. Or even one and take multiple exposure and combine them in PS. You could also use good flashlight and light paint the areas and then combine the exposures. While not architecual photos, here are a few that I've done with a flashlight.
... View more
‎Feb 17, 2025
02:47 PM
Great! Glad it worked for you.
... View more
‎Feb 17, 2025
12:48 PM
Which window: application window of document window? If document window, go to Window>Workspace>Reset Essentials. If you can't move your appication window, try resetting you preferences.
... View more
‎Feb 16, 2025
07:05 AM
Very cool @Trevor.Dennis
... View more
‎Feb 16, 2025
06:54 AM
Thanks @davescm! yea, always seem busy with other stuff.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 15, 2025
10:12 PM
1 Upvote
‎Feb 15, 2025
10:12 PM
1 Upvote
Nice Avacado tree @Trevor.Dennis. I love them and usually have one every day. I planted a couple when I was living in CA - you need 2 different types A & B so they pollinate - like a Hass and Bacon variety. I also had a dwarf one, which just started to bear a few small fruit, but then we moved.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 15, 2025
10:06 PM
1 Upvote
‎Feb 15, 2025
10:06 PM
1 Upvote
Thanks @Trevor.Dennis! I haven't posted too much lately to Behance, but I have been busy. I have been enjoying shooting launches, when I'm In California. As far as the whales go, I it is a bit nerve racking kayaking when they're around, Several times, I could see the water roiling around, when they swam under me, but I couldn't see them. The day after I went kayaking with them two women we taken up in the mouth of a humpback, in the same spot I was kayaking.
https://www.google.com/search?client=firefox-b-1-d&q=two+women+kayak+whale#fpstate=ive&vld=cid:28be439f,vid:tgwGUNnf2Rc,st:0
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 15, 2025
02:39 PM
6 Upvotes
‎Feb 15, 2025
02:39 PM
6 Upvotes
CloveX
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 15, 2025
08:26 AM
1 Upvote
‎Feb 15, 2025
08:26 AM
1 Upvote
That's so cool!
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 09, 2025
07:27 PM
2 Upvotes
‎Feb 09, 2025
07:27 PM
2 Upvotes
Well, with the help of @Stephen Marsh Here's a script that works. It doesn't have full error checking, so you have to make sure you have a selection made and an artboard selected.
#target photoshop
var doc = activeDocument
var abL = doc.activeLayer
// Store the current ruler units
var originalUnits = app.preferences.rulerUnits;
// Set units to pixels
app.preferences.rulerUnits = Units.PIXELS;
var activeSelection = null;
try { activeSelection = doc.selection.bounds } catch (e) { alert('A selection must be made')}
var abBounds = artboard_rectangle (abL)
var correctedOffset = [];
correctedOffset[0] = activeSelection[0].value-abBounds[0];
correctedOffset[1] = activeSelection[1].value-abBounds[1];
correctedOffset[2] = activeSelection[2].value-abBounds[0];
correctedOffset[3] = activeSelection[3].value-abBounds[1];
// Add guides to match bounds of selection
artboardGuides(correctedOffset[0], "vertical");
artboardGuides(correctedOffset[1], "horizontal");
artboardGuides(correctedOffset[2], "vertical");
artboardGuides(correctedOffset[3], "horizontal");
/*
artboardGuides(bounds[0].value, "vertical");
artboardGuides(bounds[1].value, "horizontal");
artboardGuides(bounds[2].value, "vertical");
artboardGuides(bounds[3].value, "horizontal");
*/
app.preferences.rulerUnits = originalUnits;
function artboardGuides(thePosition, theOrientation) {
var c2t = function (s) {
return app.charIDToTypeID(s);
};
var s2t = function (s) {
return app.stringIDToTypeID(s);
};
var descriptor = new ActionDescriptor();
var descriptor2 = new ActionDescriptor();
var reference = new ActionReference();
var reference2 = new ActionReference();
descriptor2.putUnitDouble(s2t("position"), s2t("pixelsUnit"), thePosition); // Position
descriptor2.putEnumerated(s2t("orientation"), s2t("orientation"), s2t(theOrientation)); // Horizontal or Vertical
descriptor2.putEnumerated(s2t("kind"), s2t("kind"), s2t("document"));
reference.putIndex(s2t("good"), 5);
descriptor2.putReference(s2t("null"), reference);
descriptor2.putInteger(c2t("GdCA"), 0); // Alpha?
descriptor2.putInteger(c2t("GdCR"), 128); // Red
descriptor2.putInteger(c2t("GdCG"), 128); // Green
descriptor2.putInteger(c2t("GdCB"), 128); // Blue
descriptor.putObject(s2t("new"), s2t("good"), descriptor2);
reference2.putClass(s2t("good"));
descriptor.putReference(s2t("null"), reference2);
descriptor.putEnumerated(s2t("guideTarget"), s2t("guideTarget"), s2t("guideTargetSelectedArtboard")); // Artboard guides
executeAction(s2t("make"), descriptor, DialogModes.NO);
}
function artboard_rectangle(layer) {
try {
var r = new ActionReference();
r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("artboard"));
if (layer) r.putIdentifier(stringIDToTypeID("layer"), layer.id);
else r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
var d = executeActionGet(r).getObjectValue(stringIDToTypeID("artboard")).getObjectValue(stringIDToTypeID("artboardRect"));
var bounds = new Array();
bounds[0] = d.getUnitDoubleValue(stringIDToTypeID("left"));
bounds[1] = d.getUnitDoubleValue(stringIDToTypeID("top"));
bounds[2] = d.getUnitDoubleValue(stringIDToTypeID("right"));
bounds[3] = d.getUnitDoubleValue(stringIDToTypeID("bottom"));
return bounds;
} catch (e) {
alert("An artboard must be selected!");
}
}
function isArtboard() {
// modified from a script by greless with hints from jazz-y!
// returns true or false
try {
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID('layer'), stringIDToTypeID('ordinal'), stringIDToTypeID('targetEnum'));
var options = executeActionGet(r);
return options.hasKey(stringIDToTypeID('artboard')); // test for the required key
} catch (e) {
//alert(e);
}
}
function artboardGuides(thePosition, theOrientation) {
var c2t = function (s) {
return app.charIDToTypeID(s);
};
var s2t = function (s) {
return app.stringIDToTypeID(s);
};
var descriptor = new ActionDescriptor();
var descriptor2 = new ActionDescriptor();
var reference = new ActionReference();
var reference2 = new ActionReference();
descriptor2.putUnitDouble(s2t("position"), s2t("pixelsUnit"), thePosition); // Position
descriptor2.putEnumerated(s2t("orientation"), s2t("orientation"), s2t(theOrientation)); // Horizontal or Vertical
descriptor2.putEnumerated(s2t("kind"), s2t("kind"), s2t("document"));
reference.putIndex(s2t("good"), 5);
descriptor2.putReference(s2t("null"), reference);
descriptor2.putInteger(c2t("GdCA"), 0); // Alpha?
descriptor2.putInteger(c2t("GdCR"), 128); // Red
descriptor2.putInteger(c2t("GdCG"), 128); // Green
descriptor2.putInteger(c2t("GdCB"), 128); // Blue
descriptor.putObject(s2t("new"), s2t("good"), descriptor2);
reference2.putClass(s2t("good"));
descriptor.putReference(s2t("null"), reference2);
descriptor.putEnumerated(s2t("guideTarget"), s2t("guideTarget"), s2t("guideTargetSelectedArtboard")); // Artboard guides
executeAction(s2t("make"), descriptor, DialogModes.NO);
}
... View more
‎Feb 09, 2025
05:42 PM
1 Upvote
Wow! Crazy. Good info, thanks. We've have our card comprised several times and have alerts when it's used without being present.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 09, 2025
02:43 PM
1 Upvote
‎Feb 09, 2025
02:43 PM
1 Upvote
It looks like my script gets the correct bounds. I've writen so many scripts that I don't remember doing this. I'll have to see if it can be used to correct the issue.
... View more
‎Feb 09, 2025
02:14 PM
I don't know what a workaround would be yet. Your method works for one dartboard, but I haven't tested 2 artboards. The trouble is that a marquee will be based off the document boundaries whereas a guide will be bases off an artboard's, no matter which is selected in the layer panel. To make matters worse, when you get the bounds of the dartboard. It's always 0, 0 for the top and left. It's not based on the document edges, so you can't compensate for the artboard's offset. Only thing that i can think of is to create a filled layer at the boundaries inside the artboard, then move it outside the artboard. Then you could get the AB's boundaries.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 09, 2025
08:46 AM
1 Upvote
‎Feb 09, 2025
08:46 AM
1 Upvote
@Stephen Marsh You have an issue with your script. You might not have tried a file with multiple artboards and a layer not included in the artboards. With AM code, a marquee will be created with bounds of the overall document, but a guide will use the artboard boundries. So your guides will be off.
... View more
‎Feb 08, 2025
07:39 PM
Well, after using the script, it will move the centered layer, so you would need to to select all the layers and snaps the group to the center. Not a big deal.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 08, 2025
07:14 PM
2 Upvotes
‎Feb 08, 2025
07:14 PM
2 Upvotes
Ha! I found the script and found another script that does what you want, except that it doesn't center the middle layer. It just spaces all the layers on a custom value in pixels. Here it is. For it to work, you have to select the layers that you want distributed.
#target photoshop
app.displayDialogs = DialogModes.NO;
if (app.documents.length>0){
var dlg = new Window('dialog','Space Objects');
var docRef = activeDocument
var shapeSizeTotal = 0
var selLay = getSelectedLayersIdx()
var docLayers = new Array()
var isHor = true;
var amt;
if (selLay.length>2){runProg()}
else{alert('There needs to be 3 or more layers selected')}
}
else{alert('There are no open Documents')};
function runProg(){
var run = true;
dlg.hor = dlg.add('radiobutton',undefined,'Space Horizontal');
dlg.hor.value = true;
dlg.vert = dlg.add('radiobutton',undefined,'Space Vertical');
dlg.infoGp = dlg.add('group');
dlg.sTxt = dlg.infoGp.add('statictext',undefined,'Enter the distance between the objects (' + app.preferences.rulerUnits.toString().replace(/Units\./, '') + '):');
dlg.eTxt = dlg.infoGp.add('editnumber',undefined, '');
dlg.eTxt.size = [100,20]
dlg.buttonGp = dlg.add('group');
dlg.buttonGp.okay = dlg.buttonGp.add('button',undefined,'Okay');
dlg.buttonGp.okay.onClick = function(){
dlg.close();
if(dlg.hor.value){isHor = true}
else {isHor = false};
amt = dlg.eTxt.value
}
dlg.buttonGp.cancel = dlg.buttonGp.add('button',undefined,'cancel');
dlg.buttonGp.cancel.onClick = function(){
dlg.close();
run = false;
}
dlg.eTxt.active = true;
dlg.show()
if(run){
makeActiveByIndex(selLay, true)
docLayers.sort(compare)
for (var i=0;i<docLayers.length-1;i++){
if(isHor){
var deltaM = amt-(docLayers[i+1][1].bounds[0].value-docLayers[i][1].bounds[2].value)
docLayers[i+1][1].translate (deltaM, 0)
$.writeln(deltaM)
}
else{
var deltaM = amt-(docLayers[i+1][1].bounds[1].value-docLayers[i][1].bounds[3].value)
docLayers[i+1][1].translate (0, deltaM)
}
};
makeSingleActiveByIndex(selLay[0], true);//select only one layer to make the translations
//docRef.activeLayer = docRef.layers[docRef.layers.length-1]
makeActiveByIndex(selLay, true);//reset selection to all layers
}//end if to run
};//end function runProg
function compare(a,b){return a-b}
function getSelectedLayersIdx() {
var selectedLayers = new Array;
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
var desc = executeActionGet(ref);
if (desc.hasKey(stringIDToTypeID("targetLayers"))) {
desc = desc.getList(stringIDToTypeID("targetLayers"));
var c = desc.count
var selectedLayers = new Array();
for (var i = 0; i < c; i++) {
try {
docRef.backgroundLayer;
selectedLayers.push(desc.getReference(i).getIndex());
} catch (e) {
selectedLayers.push(desc.getReference(i).getIndex() + 1);
}
}
} else {
var ref = new ActionReference();
ref.putProperty(charIDToTypeID("Prpr"), charIDToTypeID("ItmI"));
ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
try {
docRef.backgroundLayer;
selectedLayers.push(executeActionGet(ref).getInteger(charIDToTypeID("ItmI")) - 1);
} catch (e) {
selectedLayers.push(executeActionGet(ref).getInteger(charIDToTypeID("ItmI")));
}
}
return selectedLayers;
}
function makeActiveByIndex(idx, visible) {
for (var i = 0; i < idx.length; i++) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putIndex(charIDToTypeID("Lyr "), idx[i])
desc.putReference(charIDToTypeID("null"), ref);
if (i > 0) {
var idselectionModifier = stringIDToTypeID("selectionModifier");
var idselectionModifierType = stringIDToTypeID("selectionModifierType");
var idaddToSelection = stringIDToTypeID("addToSelection");
desc.putEnumerated(idselectionModifier, idselectionModifierType, idaddToSelection);
}
desc.putBoolean(charIDToTypeID("MkVs"), visible);
executeAction(charIDToTypeID("slct"), desc, DialogModes.NO);
if(checkLayerKind(docRef.activeLayer)){
if(isHor){var layerLeft = new Array(docRef.activeLayer.bounds[0],docRef.activeLayer)}
else{var layerLeft = new Array(docRef.activeLayer.bounds[1],docRef.activeLayer)}
docLayers.push(layerLeft)
}
}
};// end makeActiveByIndex
function makeSingleActiveByIndex(idx, visible) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putIndex(charIDToTypeID("Lyr "), idx)
desc.putReference(charIDToTypeID("null"), ref);
/*if (i > 0) {
var idselectionModifier = stringIDToTypeID("selectionModifier");
var idselectionModifierType = stringIDToTypeID("selectionModifierType");
var idaddToSelection = stringIDToTypeID("addToSelection");
desc.putEnumerated(idselectionModifier, idselectionModifierType, idaddToSelection);
}*/
desc.putBoolean(charIDToTypeID("MkVs"), visible);
executeAction(charIDToTypeID("slct"), desc, DialogModes.NO);
};//end makeSingleActiveByIndex
function checkLayerKind(lay){
if(lay.kind == LayerKind.NORMAL || lay.kind == LayerKind.TEXT || lay.kind == LayerKind.SOLIDFILL){return true}
else{return false}
};//end checkLayerKind
... View more
‎Feb 08, 2025
07:08 PM
I'll see if I still have the script and if it can be reworked.
... View more
‎Feb 08, 2025
06:35 PM
I would say you need a script for that. I wrote one back before Adobe released the distribute with even spaces, but it would just be a matter of using input for the spacing rather than dividing the space between the objects.
... View more
‎Feb 07, 2025
08:14 PM
Have you tried reinstalling PS?
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 06, 2025
06:02 PM
2 Upvotes
‎Feb 06, 2025
06:02 PM
2 Upvotes
@Stephen Marsh is correct that a script has to run its course and can't wait for input that you want. While probably not exactly what you want, I had a work script that would format my images, but if I opened new images through Bridge directly into Camera Raw, my script would keep running. That saved me a lot of time. As far as what Stephen mentioned about logging the files and stopping, that can be done, and I did do something along those lines. Basically a folder of images would be selected and then a counter and log could be saves to a support file that the main scripts reads upon startup and then continues, where left off.
... View more
‎Feb 05, 2025
01:48 PM
You can apply mask from another file, in the current version of camera raw, opening the files directly into it. Can can sync the corrections and just unchecked all except for masking.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Feb 04, 2025
06:00 PM
1 Upvote
‎Feb 04, 2025
06:00 PM
1 Upvote
I'm not an expert in video, but artboards were designed to do graphic layouts, not really for video. So I'm not surprised that you're having this problem. I would think Premier Pro or After Effects would bea better choice.
... View more
‎Feb 02, 2025
07:49 PM
I haven't used this feature, but I'm thinking that closing ACR then opening a new file clears the previous version. Has this worked in the past?
... View more
‎Feb 02, 2025
06:30 PM
Fantastic! Glad that worked, for you.
... View more
‎Feb 02, 2025
05:51 PM
Have you reset your preferences?
... View more
‎Jan 31, 2025
06:09 PM
I haven't used this feature yet, but I asked if it could remove reflections in eyeglasses. I was told no, so I'm wondering if the picture frame, in your image is too small for the feature to work, so you're getting an error.
... View more
Community Expert
in Photoshop ecosystem Discussions
‎Jan 31, 2025
06:17 AM
1 Upvote
‎Jan 31, 2025
06:17 AM
1 Upvote
You need to change this in Windows expolorer, if you're on Windows.
To hide common file extensions in Windows, you can use the Hide extensions for known file types option in the Folder Options menu. To unhide file extensions, you can turn off this option.
To hide file extensions in Windows
Open File Explorer
Click Tools
Click Folder Options
Click the View tab
Scroll down to Hide extensions for known file types
Check the box to hide file extensions
Click OK
To unhide file extensions in Windows
Open File Explorer
Click Tools
Click Folder Options
Click the View tab
Scroll down to Hide extensions for known file types
Uncheck the box to unhide file extensions
Click OK
If you're on Mac, you can do it too. Just Google hide common file extension.
... View more
‎Jan 28, 2025
11:54 AM
I was just having a conversation with someone on IG about this and saying not to hold your breath. When Adobe released the mixing tool, we started pushing to get it applied to masks. It seems their solution was the point color tool. It can be done this way, just slower and more work, but it does have advantages that the mixing tools doesn't, like refining the color selected.
... View more