Photoshop脚本:并排组合3个图像 [英] Photoshop Script: combine 3 images side-by-side

查看:537
本文介绍了Photoshop脚本:并排组合3个图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要拍摄大约500张1024x768分辨率图像的文件夹,并将它们一次三张合并为3072x768的纯色全景图。 (不是Photoshop的photomerge)

I'm needing to take a folder of about 500 1024x768 resolution images, and combine them three at a time into a solid panorama at 3072x768. (Not Photoshop's photomerge)

我绝不是程序员;只是偶然发现这个网站,每个人似乎都很有帮助。我倾向于在Photoshop中使用java脚本可能是我最好的选择。

I am by no means a programmer; just stumbled upon this site and everyone seems very helpful. I'm leaning that using a java script inside Photoshop is probably my best bet.

我将源文件重命名为:

Image_SD_1a

Image_SD_1a

Image_SD_1b

Image_SD_1b

Image_SD_1c

Image_SD_1c

Image_SD_2a

Image_SD_2a

...等等...

每个三个图像中有一个是内置,它需要作为JPG保存到另一个文件夹,如:

One each three-image is built, it needs to save into another folder as a JPG, as:

Image_001

Image_001

Image_002

Image_002

......依旧......但我当然可以批量重命名。

...and so on... But I can do a batch rename after of course.

我搜索过发现这两个脚本很接近,但我不够聪明,无法添加第三图像步骤,或更改文件名结构。

I searched and found these two scripts that are close, but I'm not smart enough to add a "third" image step, or change the file name structure.

如何批量组合在Photoshop中将两个独特的图像系列组合成单个并排图像?

将文件合并在一起(并排)在文件夹Photoshop脚本中

非常感谢任何帮助!

推荐答案

此脚本将执行您想要的操作。
它适用于以下原则:

This script will do what you want. It works on these principles:


  • 所有图像(Image_SD_1a.jpg,Image_SD_1b.jpg,Image_SD_1b.jpg)都在同一目录。

  • 图像为jpeg(将保存为Image_SD_1abc.jpg)

  • 图像将保存在同一文件夹中与其他图像一样。

  • 打开图像A然后运行脚本。

  • All your images (Image_SD_1a.jpg, Image_SD_1b.jpg, Image_SD_1b.jpg) are in the same directory.
  • The images are jpegs (will be saved out as Image_SD_1abc.jpg)
  • The images will be saved out in the same folder as the other images.
  • Open image A AND THEN run the script.

它不是完美,它可以改善,变得更好,但累了,我的咖啡用完了。脚本如下:

It's not perfect, and it could be improved and made better, but tired and I'm running out of coffee. Script is as follows:

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


// call the source document
var srcDoc = app.activeDocument;
var ext = getFileExtension(srcDoc);
var docPath = srcDoc.path;

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

// name the mother
var docName = srcDoc.name;

// get names for images B & C
var imageStub = getImageName(docName);
var imageB = docPath + "/" + imageStub + "b" + ext;
var imageC = docPath + "/" + imageStub + "c" + ext;

// load image B % copy it
openThisFile(imageB);
activeDocument.selection.selectAll();
activeDocument.selection.copy();
activeDocument.selection.deselect();
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);


// return to image A
app.activeDocument = srcDoc;

// paste it
activeDocument.paste();
translateLayer(imageW, 0);

// do the same for C
// load image C % copy it
openThisFile(imageC);
activeDocument.selection.selectAll();
activeDocument.selection.copy();
activeDocument.selection.deselect();
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

// return to image A
app.activeDocument = srcDoc;

// paste it
activeDocument.paste();
translateLayer(imageW *2, 0);


// resize canvas
srcDoc.resizeCanvas(imageW *3, imageH, AnchorPosition.MIDDLELEFT);

// flatten it
srcDoc.flatten();

// save it out
var tempName = imageStub + "abc";
saveMe(docPath, tempName, 12);

// close the new doc
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

function getImageName (astring)
{
  // Image_SD_1a.jpg
  astring += "";
  //re move extension -1
  var temp = astring.substring(0, astring.lastIndexOf("."));
  return temp.substring(0, temp.length-1);
}

function getFileExtension (astring)
{
  astring += "";
  var x = astring.substring(astring.lastIndexOf("."), astring.length-1);
  //alert(x);
  return x;
}

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

function saveMe(fPath, fname, myJpgQuality)
{
  //vegetables 
  if (!myJpgQuality) myJpgQuality = 12;

  // Set filePath and fileName to source path
  filePath = fPath + "/" + fname + ".jpg";

  var jpgFile = new File(filePath);
  jpgSaveOptions = new JPEGSaveOptions();
  jpgSaveOptions.formatOptions = FormatOptions.OPTIMIZEDBASELINE;
  jpgSaveOptions.embedColorProfile = true;
  jpgSaveOptions.matte = MatteType.NONE;
  jpgSaveOptions.quality = myJpgQuality;

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

function translateLayer(dx,dy)
{
  // =======================================================
  var id2014 = charIDToTypeID( "Trnf" );
  var desc416 = new ActionDescriptor();
  var id2015 = charIDToTypeID( "null" );
  var ref287 = new ActionReference();
  var id2016 = charIDToTypeID( "Lyr " );
  var id2017 = charIDToTypeID( "Ordn" );
  var id2018 = charIDToTypeID( "Trgt" );
  ref287.putEnumerated( id2016, id2017, id2018 );
  desc416.putReference( id2015, ref287 );
  var id2019 = charIDToTypeID( "FTcs" );
  var id2020 = charIDToTypeID( "QCSt" );
  var id2021 = charIDToTypeID( "Qcsa" );
  desc416.putEnumerated( id2019, id2020, id2021 );
  var id2022 = charIDToTypeID( "Ofst" );
  var desc417 = new ActionDescriptor();
  var id2023 = charIDToTypeID( "Hrzn" );
  var id2024 = charIDToTypeID( "#Pxl" );
  desc417.putUnitDouble( id2023, id2024, dx );
  var id2025 = charIDToTypeID( "Vrtc" );
  var id2026 = charIDToTypeID( "#Pxl" );
  desc417.putUnitDouble( id2025, id2026, dy );
  var id2027 = charIDToTypeID( "Ofst" );
  desc416.putObject( id2022, id2027, desc417 );
  executeAction( id2014, desc416, DialogModes.NO );
}

这篇关于Photoshop脚本:并排组合3个图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆