5

私は次のことをする必要があります。1.png 1_m.png、2.png 2_m.png (など) の命名規則が設定されたフォルダに複数の png ファイルを配置する。PNG ファイルは同じ幅と高さ (320 x 360 ピクセル) です。

これで、スクリプトは次のことを行う必要があります。

ファイル1.png 1_m.pngを取り、1_m.pngが左側に、1.pngが右側に配置された新しいファイルを作成します。これら2つを1つのレイヤーにマージし、1_done.pngと言って保存し、これを実行しますフォルダー内のすべてのファイルに対するアクション。

これは Photoshop スクリプトである必要はありません。Web を検索しましたが、有用な解決策が見つかりませんでした。また、ここでは何も決まっていません。ファイルは、これまでで最も簡単な解決策である別のフォルダーにある可能性があります。Photoshop のバージョンは CS5 です

4

2 に答える 2

3

このスクリプトはあなたが望むことをします。すべてのファイルをディレクトリに配置し、自動バッチ->スクリプトを使用してスクリプトを実行します。ファイル名にアンダースコアのない画像が見つかり、ペアの名前ファイル( "_m"付き)を開き、並べて保存し、ファイル名に_doneを追加して保存します。

//設定ピクセル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()
}
于 2012-11-23T17:00:00.530 に答える
2

Windows、OSX、および Linux で無料で利用できる ImageMagick を使用してこれを行います。実際、ほとんどの Linux ディストリビューションにインストールされています。

その要点は、基本的に次のように、ImageMagick のconvertコマンドを使用して 2 つの画像を並べて追加することです。

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

スクリプトは次のようになります (ほぼ半分はコメントです)。

#!/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

このような画像から始めると:

ここに画像の説明を入力

ここに画像の説明を入力

すべてのペアに対してこれを生成します。

ここに画像の説明を入力

于 2014-12-11T14:35:53.840 に答える