How to batch combine two unique series of images into a single side-by-side image in Photoshop?

ぃ、小莉子 提交于 2019-12-12 03:48:48

问题


I need to combine two series of images (both the same resolution, saved as JPG files) into a single JPG file with the images side by side to each other. I have tried doing this with Photoshop CS6 actions but to no avail... I have searched the internet for possible solutions but as it turns out programming knowledge is required to write a script to perform such a function. I would like to have any help possible with the following:

My file names are as such:

Series one: bone00001.jpg, bone00002.jpg ... bone00060.jpg Series two: st00001.jpg, st00002.jpg ... st00060.jpg

I want them combined side by side so that the "bone" series is on the left, and the "st" series is on the right, and the final series exported as done00001.jpg ... done00060.jpg

Would anyone be able to help me with this Photoshop script?


回答1:


Adam D is right - you're better off asking at the Adobe forums. But as luck would have it your request is very similar to a question asked a while back. The script is crude; but it will do what you want: The images need to be the same size. If the bone images are smaller than the scan images it'll look a mess and won't work.

Save this out as .jsx file. It can be accessed within PS from the file > scripts menu.

Load in one of the bone images, run the script - which will then find the matching scan image and put them side by side and save them out as bone_XXXX_done.jpg (where XXXX is number)

    var srcDoc = app.activeDocument;

// call the current document
var srcDoc = app.activeDocument;

// set original width and height
var imageW = srcDoc.width.value;
var imageH = srcDoc.height.value;

// get the info out of the source doc
var fileName = srcDoc.name;
var docName = fileName.substring(0,fileName.length -4);
var filePath = srcDoc.path.toString();
var fileExt = fileName.substring(fileName.length -4, fileName.length);

var nameCheck = fileName.substring(0,fileName.indexOf("bone"));

if (nameCheck <1)
{
   var fileNum = fileName.substring(4,fileName.length -4);
   // no underscore so we need to open it's namesake
   // alert(nameCheck)
   var filePair = filePath + "/" + "st" + fileNum + fileExt;
   openThisFile(filePair)
   activeDocument.selection.selectAll()
   activeDocument.selection.copy();
   app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
   app.activeDocument = srcDoc;
   activeDocument.resizeCanvas(imageW *2, imageH, AnchorPosition.MIDDLELEFT);
   selectRect(0, imageW, imageW*2, imageH)
   activeDocument.paste()
   activeDocument.flatten();
   var newName = filePath + "/" + docName + "_done" + fileExt
   saveMe(newName)
}
    else
    {
      app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
    }


function openThisFile(masterFileNameAndPath)
{
 var fileRef = new File(masterFileNameAndPath)
 if (fileRef.exists)
 //open that doc
 {
    app.open(fileRef);
 }
 else
 {
    alert("error opening " + masterFileNameAndPath)
 }
}


function selectRect(top, left, right, bottom)
{
    srcDoc.selection.deselect()
    // =======================================================
    var id1 = charIDToTypeID( "setd" );
    var desc1 = new ActionDescriptor();
    var id2 = charIDToTypeID( "null" );
    var ref1 = new ActionReference();
    var id3 = charIDToTypeID( "Chnl" );
    var id4 = charIDToTypeID( "fsel" );
    ref1.putProperty( id3, id4 );
    desc1.putReference( id2, ref1 );
    var id5 = charIDToTypeID( "T   " );
    var desc2 = new ActionDescriptor();
    var id6 = charIDToTypeID( "Top " );
    var id7 = charIDToTypeID( "#Pxl" );
    desc2.putUnitDouble( id6, id7, top );
    var id8 = charIDToTypeID( "Left" );
    var id9 = charIDToTypeID( "#Pxl" );
    desc2.putUnitDouble( id8, id9, left );
    var id10 = charIDToTypeID( "Btom" );
    var id11 = charIDToTypeID( "#Pxl" );
    desc2.putUnitDouble( id10, id11, bottom );
    var id12 = charIDToTypeID( "Rght" );
    var id13 = charIDToTypeID( "#Pxl" );
    desc2.putUnitDouble( id12, id13, right );
    var id16 = charIDToTypeID( "Rctn" );
    desc1.putObject( id5, id16, desc2 );
    executeAction( id1, desc1, DialogModes.NO );
}

function saveMe(fPath)
{

// save out the image as jpeg
var jpgFile = new File(fPath);
jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.formatOptions = FormatOptions.OPTIMIZEDBASELINE;
jpgSaveOptions.embedColorProfile = true;
jpgSaveOptions.matte = MatteType.NONE;
jpgSaveOptions.quality = 12;

activeDocument.saveAs(jpgFile, jpgSaveOptions, true, Extension.LOWERCASE);

// close that saved jpg
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}


来源:https://stackoverflow.com/questions/14368429/how-to-batch-combine-two-unique-series-of-images-into-a-single-side-by-side-imag

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!