Have you tried using the align functions to move the images so that they’re flush with the edges?
The advantage with using the align functions is that it wouldn’t matter if the frame pieces are different sizes, because the location to which their moved wont be dependent on absolute values for determining where they’ll end up.
Also, how about posting links to 2 different sizes of frame elements that you’re trying to do this with, as well as an image showing with one of them what you want to end up with for all of them.
Align layers.
Copy/paste to master doc which is very big, and square. It already has four selection channels on it that crop the four frames.
Duplicate pasted (frame) layer. Rotate 90 degrees. Select both layers’ transparency. Crop. Align original frame to (left) side of canvas. Align rotated to top of canvas. Duplicate and flip both and align right bottom. Use pre-made master masks to crop each frame. Then use all four layers to create a selection and drop a black layer with this selection at the bottom (to cover up holes in your masks). I also would add a drop shadow to two of the frames.
This way all you need is a frame section (facing the proper direction! – you could create two actions or just flip it before you run the single action). As long as it is less than 1/2 as wide as it is tall, the action should work and return nice results.
J
Something else to consider when doing this:
The lighting of the starting frame elementwith its inherent shadows and highlightswill look wrong on the other 3 digitally rotated frame elements.
Me, personally, I couldn’t abide that. I’d rather put together one example of each frame and shoot them that way.
How about a simple script?
#target photoshop
var startRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
var doc = activeDocument;
doc.selection.selectAll();
doc.selection.copy();
app.activeDocument.resizeCanvas(doc.width*2, doc.height*2, AnchorPosition.TOPLEFT);
doc.paste();
doc.selection.selectAll();
align(‘AdRg’);
align(‘AdTp’);
doc.activeLayer.rotate(90);
doc.paste();
doc.selection.selectAll();
align(‘AdRg’);
align(‘AdBt’);
doc.activeLayer.rotate(180);
doc.paste();
doc.selection.selectAll();
align(‘AdLf’);
align(‘AdBt’);
doc.activeLayer.rotate(-90);
doc.selection.deselect();
app.preferences.rulerUnits = startRulerUnits;
function align(method) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putEnumerated( charIDToTypeID( "Lyr " ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) );
desc.putReference( charIDToTypeID( "null" ), ref );
desc.putEnumerated( charIDToTypeID( "Usng" ), charIDToTypeID( "ADSt" ), charIDToTypeID( method ) );
executeAction( charIDToTypeID( "Algn" ), desc, DialogModes.NO );
};
Nice effort on the script, Paul.
But I’d still balk at having mismatched lighting.
At least it’s rotationally symmetric.
Phos’ point is a good one. You could play with curves and gradient masks to normalize the lighting, and another set in your action to simulate a new light source.
J
I always get kind of a frustrated kick out of how a bunch of us can swoop in and rip apart a question and solve it 8 ways from Sunday, plus bring up and hash out tangential issues before the O.P. ever returns. The frustrating part is if they only return and say what amounts to "Thanks, smell ya later!" or don’t return at all.
I’m here for the damned dialogue, man! And be quick about! Pip pip!
🙂
Newbs definitely need more training before they ask their questions – 🙂
Seriously, 9 out of ten answers I give never get any response – that’s part of the game.