Mi flujo de trabajo contiene la creación de múltiples panoramas en Photoshop uno por uno. Tengo varias carpetas, cada una con jpegs que deben combinarse en un panorama y guardarse con una extensión PSD.
Photoshop hace un buen trabajo al producir el panorama, pero pierdo mucho tiempo interviniendo en los pasos repetitivos de seleccionar carpetas y su contenido, abrirlos en el cuadro de panorama y seleccionar las opciones de panorama requeridas (lo que incluye marcar la reposición y desmarcar la combinación). imágenes juntas) antes de que Photoshop haga su magia de fusión de fotos. Además, pierdo tiempo en el cuadro de diálogo Guardar para guardar cada imagen después de generar el panorama.
Quería saber si hay un script que pueda automatizar toda esta tarea. Así que proporciono la carpeta principal (que tiene las carpetas de fotos que necesitaban ser unidas) y dejo la computadora durante horas mientras procesa el photomerge y guarda los archivos PSD resultantes sin que yo tenga que sentarme al lado. Tengo la sensación de que esto es posible porque todos los pasos son repetitivos.
Los foros antiguos tienen soluciones para muchos problemas similares, con asistentes que crean scripts para los mismos, pero ninguno de los enlaces funciona ahora.
Aquí, modifiqué ligeramente este guión de Mike Hale. Este script le pedirá una carpeta y luego procesará todas las subcarpetas con imágenes. Cosas para cambiar:
.png
archivos, modifique la extensión en la línea 24 ( folders[i].getFiles('*.png');
);Resultado (tomé algunas imágenes aleatorias de Google para la prueba):
var runphotomergeFromScript = true; // must be before Photomerge include
//@includepath "/C/Program Files/Adobe/Adobe Photoshop CC 2019/Presets/Scripts/"
//@include "Photomerge.jsx"
//@show include
var psdOpts = new PhotoshopSaveOptions();
psdOpts.embedColorProfile = true;
psdOpts.alphaChannels = true;
psdOpts.layers = true;
(function()
{
var workFolder = Folder.selectDialog();
if (workFolder == null) return false;
var folders = workFolder.getFiles(function(file)
{
return file instanceof Folder;
});
if (folders.length == 0) return false
for (var i = 0; i < folders.length; i++)
{
var fList = folders[i].getFiles('*.png');
// override Photomerge.jsx settings. Default is "Auto". Uncomment to override the default.
//photomerge.alignmentKey = "Auto";
//photomerge.alignmentKey = "Prsp";
//photomerge.alignmentKey = "cylindrical";
//photomerge.alignmentKey = "spherical";
//photomerge.alignmentKey = "sceneCollage";
photomerge.alignmentKey = "translation"; // "Reposition" in layout dialog
// other setting that may need to be changed. Defaults below
photomerge.advancedBlending = false; // 'Blend Images Together' checkbox in dialog
photomerge.lensCorrection = false; // Geometric Distortion Correction'checkbox in dialog
photomerge.removeVignette = false; // 'Vignette Removal' checkbox in dialog
try
{
if (fList.length > 1)
{
photomerge.createPanorama(fList, false);
}
}
catch (e)
{
alert(e + '\nLine: ' + e.line)
}
// saving
var saveFile = {
name: folders[i].name,
path: fList[0].parent
}
savePSB(saveFile)
saveTIF(saveFile)
saveJPG(saveFile)
savePSD(saveFile)
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
})()
function savePSB(data)
{
var desc = new ActionDescriptor();
var descCompatibility = new ActionDescriptor();
descCompatibility.putBoolean(stringIDToTypeID('maximizeCompatibility'), true);
desc.putObject(charIDToTypeID('As '), charIDToTypeID('Pht8'), descCompatibility);
desc.putPath(charIDToTypeID('In '), new File(data.path + "/" + data.name + ".psb"));
executeAction(charIDToTypeID('save'), desc, DialogModes.NO);
}; // end of savePSB()
function saveTIF(data)
{
var desc = new ActionDescriptor();
var descOptions = new ActionDescriptor();
descOptions.putEnumerated(charIDToTypeID('BytO'), charIDToTypeID('Pltf'), charIDToTypeID('Mcnt'));
descOptions.putEnumerated(stringIDToTypeID('layerCompression'), charIDToTypeID('Encd'), stringIDToTypeID('RLE'));
desc.putObject(charIDToTypeID('As '), charIDToTypeID('TIFF'), descOptions);
desc.putPath(charIDToTypeID('In '), new File(data.path + "/" + data.name + ".tif"));
executeAction(charIDToTypeID('save'), desc, DialogModes.NO);
}; // end of saveTIF()
function saveJPG(data)
{
if (data.path == undefined) return false;
data.name = data.name == undefined ? activeDocument.name : data.name;
data.quality == undefined && data.quality = 75
var options = new ExportOptionsSaveForWeb(),
jpgFile = new File(data.path + '/' + data.name + '.jpg');
options.format = SaveDocumentType.JPEG;
options.quality = data.quality;
activeDocument.exportDocument(jpgFile, ExportType.SAVEFORWEB, options);
}
function savePSD(data)
{
var desc = new ActionDescriptor();
var descOptions = new ActionDescriptor();
descOptions.putBoolean(stringIDToTypeID('maximizeCompatibility'), true);
desc.putObject(charIDToTypeID('As '), charIDToTypeID('Pht3'), descOptions);
desc.putPath(charIDToTypeID('In '), new File(data.path + "/" + data.name + ".psd"));
executeAction(charIDToTypeID('save'), desc, DialogModes.NO);
} // end of savePSD()
psb
y tif
con el nombre de una carpeta de archivos combinados. Si solo necesita uno de los archivos, simplemente elimine la línea 58 o 59.saveJPG()
utiliza Save For Web de Photoshop y también puede recibir quality
como argumento opcional (75 por defecto). Si desea guardar con una calidad diferente, modifique el argumento a algo comosaveJPG({name: folders[i].name, path: fList[0].parent, quality: 90})
Sr. en línea