This can be handled with a script.
//©2018-2021 David M. Converse
if(BridgeTalk.appName == "bridge"){
var flipCmd = new MenuElement("command", "Flip", "at the end of Tools");
}
flipCmd.onSelect = function (){
flip();
}
function flip(){
var fPalette = new Window('palette', 'Flip', undefined, {closeButton:true});
fPalette.preferredSize = [200, 160];
fPalette.frameLocation = [100, 100];
var fpnl = fPalette.add('panel', [10,10,150,120]);
fpnl.fBtn = fpnl.add('button', [15, 25, 130, 45], 'Vertical');
fpnl.fBtn2 = fpnl.add('button', [15, 70, 130, 90], 'Horizontal');
var dir = "v"
fPalette.show();
fpnl.fBtn.onClick = function(){
dir = "v";
meta();
}
fpnl.fBtn2.onClick = function(){
dir = "h";
meta();
}
function meta(){
var thumbs = app.document.selections; //("cr2, nef, arw");
var counter = "";
if(thumbs.length != 0){
if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
for(var i = 0;i < thumbs.length;i++){
try{
if(thumbs[i].spec instanceof File && thumbs[i].hasMetadata){
var thumb = thumbs[i];
var xmp = new XMPMeta(thumb.synchronousMetadata.serialize());
var oldOr = xmp.getProperty(XMPConst.NS_TIFF, "Orientation");
var newor = 1;
if(dir == "v"){
switch(oldOr.value){
case "1":
newor = 2;
break;
case "2":
newor = 1;
break;
case "3":
newor = 4;
break;
case "4":
newor = 3;
break;
case "5":
newor = 6;
break;
case "6":
newor = 5;
break;
case "7":
newor = 8;
break;
case "8":
newor = 7;
}
}
if(dir == "h"){
switch(oldOr.value){
case "1":
newor = 4;
break;
case "2":
newor = 3;
break;
case "3":
newor = 2;
break;
case "4":
newor = 1;
break;
case "5":
newor = 8;
break;
case "6":
newor = 7;
break;
case "7":
newor = 6;
break;
case "8":
newor = 5;
}
}
xmp.setProperty(XMPConst.NS_TIFF, "Orientation", newor);
var updatedPacket = xmp.serialize(XMPConst.SERIALIZE_OMIT_PACKET_WRAPPER | XMPConst.SERIALIZE_USE_COMPACT_FORMAT);
thumb.metadata = new Metadata(updatedPacket);
}
}
catch(e){
}
}
}
}
}