Merging files together (side by side) in folder Photoshop scripts

前端 未结 2 366
借酒劲吻你
借酒劲吻你 2021-01-13 06:25

I need to do the following thing. Having multiple png files in folder with a naming convention set: 1.png 1_m.png, 2.png 2_m.png (and so on). The png files have the same wid

相关标签:
2条回答
  • 2021-01-13 07:06

    I would do this with ImageMagick which is available for free for Windows, OSX and Linux - in fact it is installed on most Linux distros anyway.

    The crux of it is to use ImageMagick's convert command to append two images side by side, basically like this:

    convert left.png right.png +append out.png
    

    So the script looks like this - (nearly half of it is comments):

    #!/bin/bash
    for i in [0-9]*_m.png; do
        # Deduce name of left image
        left="$i"
        # Deduce name of right image
        right="${i/_m/}"
        # Deduce name of output image
        done="${i/_m/_done}"
        # Merge the little devils
        convert "$left" "$right" +append "$done"
    done
    

    If we start with images like this:

    enter image description here

    and

    enter image description here

    It will generate this for all pairs:

    enter image description here

    0 讨论(0)
  • 2021-01-13 07:12

    This script will do what you want. Put all the files in a directory and then run the script using automate batch -> script. It'll find an image without and underscore in the the file-name and then open it's paired name file (with "_m"), put them side by side and save it out with _done added on to the file-name.

    //pref pixels app.preferences.rulerUnits = Units.PIXELS;

    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("_"));
    
    if (nameCheck <1)
    {
       // no underscore so we need to open it's namesake
       // alert(nameCheck)
       var filePair = filePath + "/" + docName + "_m" + 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
    var pngFile = new File(fPath);
    pngSaveOptions = new PNGSaveOptions();
    pngSaveOptions.embedColorProfile = true;
    pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
    pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1;
    activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE);
    
    // close that saved png
     app.activeDocument.close()
    }
    
    0 讨论(0)
提交回复
热议问题