Импорт изображений с определенным расширением файла в Photoshop - PullRequest
0 голосов
/ 21 декабря 2018

Я новичок в JavaScripting (узнал много с этого сайта!).У меня есть существующий код (от кого-то другого), который успешно переносит все изображения в фотошоп из выбранной пользователем папки.Я хотел бы изменить код, чтобы ввести только определенные расширения файлов (Jpg, PNG, TIFF ... и т. Д.).Я нашел отличный пример кода с этого сайта ниже того, что я хотел бы сделать.

var distilledFileList = [];
for (var i = 0; i < fileList.length; i++){
  if (/\.(?:jpe?g|png|gif|psd)$/i.test(fileList[i].name)){
    distilledFileList.push(fileList[i]);
  }
}

Оригинальный код, найденный здесь

Я не понял, какреализовать версию этого успешно в то, что у меня уже есть.Вот основной раздел моего кода, который, я полагаю, где необходимо добавить модификацию.

    #target photoshop
    app.bringToFront();

    // Dialog for user to choose folder of documents to process
    var inputFolderArray = [];
    do {
    var inputFolder = Folder.selectDialog("Select a folder of documents to process");
    if(inputFolder != null) {
          inputFolderArray.push(inputFolder);
        }
    }

    while(inputFolder != null 
    || inputFolder != undefined)

    // Pulls images from inputFolder
    for (var j = 0; j < inputFolderArray.length; j++) { 
    var filesList = inputFolderArray[j].getFiles();
    var outputDirectory = inputFolderArray[j] + '/';
    }

function PSDCreate(frameArrays, outputDirectory) {
  directory = outputDirectory + '/';

//var outputLocation = inputFolder + "/" + directory;
  var outputFileName = '';

  if (frameArrays != null) {


// Get all the files in the folder
    var fileList = frameArrays;
    var k = 0;

    for (var i = 0; i < fileList.length; i++) {
      if (fileList[i] instanceof File && fileList[i].hidden == false) {

var fileName = fileList[i].name;
        var docRef = open(fileList[i]);

        if(k == 0) {
          k++;
          outputFileName = RemoveExtension(docRef.name);
app.displayDialogs = DialogModes.NO;
        }
      }
    }


    // Execute changes to images in photoshop here..

Кто-нибудь знает, как реализовать версию кода примера к тому, что у меня уже есть случайно?Любая помощь с благодарностью!

1 Ответ

0 голосов
/ 22 декабря 2018

Если я правильно понимаю, вы хотите, чтобы пользователь выбрал несколько папок, а затем обрабатывал файлы всех этих папок.Прежде всего, здесь

// Pulls images from inputFolder
for (var j = 0; j < inputFolderArray.length; j++) { 
    var filesList = inputFolderArray[j].getFiles();
    var outputDirectory = inputFolderArray[j] + '/';
}

filesList будет перезаписываться с каждой новой папкой, вы получите список файлов только из последней выбранной папки.Я бы изменил это на

// Pulls images from inputFolder
var files = []
for (var j = 0; j < inputFolderArray.length; j++)
{
    var filesList = inputFolderArray[j].getFiles();

    for (var i = 0; i < filesList.length; i++)
    {
        if (/\.(?:jpe?g|png|gif|psd)$/i.test(filesList[i].name)) files.push(filesList[i]); //get needed files from folders
    }
}
alert(files); // < array of files

, если вам нужно только открыть эти файлы, вы можете заменить files.push(filesList[i]); на app.open(fileList[i]);

...