Copy link to clipboard
Copied
I've outlined the outermost perimeter of an object in a picture I took and also outlined some details inside the object's perimeter, totalling 10 inner outlines and 1 outermost outline. When I do CMD + Enter to make it into a selection, it only makes the 10 inner outlines into a selection, ignoring the outermost perimeter outline.
How can I make everything a selection? I am trying to change the color of the car. I've selected the car then the 10 inner outlines I want to leave out, but it seems applying hue/saturation filters applies inversely onto the 10 outlines and not the car itself.
Copy link to clipboard
Copied
A little perplexed on what you are attempting.
Can you see the Context sensitive menu. This is the bar showing "select object". PS does a good job selecting the object. You may have to tweak to insure you capture everything. Easy way is hit "Q" on your keyboard. This should bring up the Quick Mask mode. Paint over what you want to include. When done hit "Q" to turn off QM. If you want to turn the Path into a selection you should be able to right mouse click inside the Path and select "Make Selection"
Copy link to clipboard
Copied
Select one of the inner shapes that you want to exclude using the Path Selection tool.
With the Pen tool active, select Subtract Front Shape from the Options bar.
Treat the remaining inner paths the same way. You can select them all at once and choose the Subtract setting.
Copy link to clipboard
Copied
With Pen tool selected, drag a window around ALL of the path points
Ctrl C to copy
Make a new path.
Ctrl v to paste.
Select the direct select tool, and drag around, or Shift click to sellect the inner paths, and delet them.
This is your full area path. Ctrl click to make a selection.
You could add Adjustment layers, and the selection will be reflected in its mask.
What ever.
If you want to control the inner parts individually, select the path, click on Make Selection bottom of paths panel, and copy to new layer (Ctrl J). Now edit just that layer in what ever what you need.
What I wouldn't do is try to control everything on just one layer by masking. I mean you could, but Photoshop invented layers for a reason.
Copy link to clipboard
Copied
I wanted to have a go at scripting this in legacy ExtendScript .jsx
/*
Subtract All Paths to Selection.jsx
v1.0 - 6th February 2024, Stephen Marsh
https://community.adobe.com/t5/photoshop-ecosystem-discussions/how-do-i-make-all-pen-outlines-into-a-selection/td-p/14404434
*/
#target photoshop
app.activeDocument.selection.deselect();
for (var i = 0; i < app.activeDocument.pathItems.length; i++) {
function s2t(s) {
return app.stringIDToTypeID(s);
}
var descriptor = new ActionDescriptor();
var reference = new ActionReference();
var reference2 = new ActionReference();
reference.putProperty(s2t("channel"), s2t("selection"));
descriptor.putReference(s2t("null"), reference);
reference2.putName(s2t("path"), app.activeDocument.pathItems[i].name);
descriptor.putReference(s2t("to"), reference2);
descriptor.putInteger(s2t("version"), 1);
descriptor.putBoolean(s2t("vectorMaskParams"), true);
executeAction(s2t("subtractFrom"), descriptor, DialogModes.NO);
}
EDIT: Which then made me want to have a go at butchering some UXP .psjs code:
/*
Subtract All Paths to Selection.psjs
v1.0 - 6th February 2024, Stephen Marsh
https://community.adobe.com/t5/photoshop-ecosystem-discussions/how-do-i-make-all-pen-outlines-into-a-selection/td-p/14404434
*/
// For Photoshop 23.5 >
const app = require('photoshop').app;
await app.activeDocument.selection.deselect();
for (let i = 0; i < app.activeDocument.pathItems.length; i++) {
async function actionCommands() {
let command;
let result;
let psAction = require("photoshop").action;
// Subtract From Selection
command = {"_obj":"subtractFrom","_target":[{"_property":"selection","_ref":"channel"}],"to":{"_name":app.activeDocument.pathItems[i].name,"_ref":"path"},"vectorMaskParams":true,"version":1};
result = await psAction.batchPlay([command], {});
}
async function runModalFunction() {
await require("photoshop").core.executeAsModal(actionCommands, {"commandName": "Action Commands"});
}
await runModalFunction();
}
https://prepression.blogspot.com/2017/11/downloading-and-installing-adobe-scripts.html