通过脚本将特定文件格式从文件夹导入Illustrator中

问题描述 投票:0回答:1

我已经在网上找到了这个脚本,这几乎是我想要的,但是需要对其进行修改,但我似乎无法使其正常工作。

    if (selectedFolder) {
        myDocument = app.documents.add();

        var firstImageLayer = true;
        var newLayer ;
        var thisPlacedItem;

        // create document list from files in selected folder
        var imageList = selectedFolder.getFiles();

        for (var i = 0; i < imageList.length; i++) {
            // open each document in file list
            if (imageList[i] instanceof File) {
                // get the file name
                var fName = imageList[i].name.toLowerCase();
                // check for supported file formats
                //if( (fName.indexOf(".eps") == -1) ) {
                if( (fName.indexOf(".tga") == -1) && (fName.indexOf(".png") == -1)) {
                    // skip unsupported formats
                    continue;
                } else {
                    if( firstImageLayer ) {
                        newLayer = myDocument.layers[0];
                        firstImageLayer = false;
                    } else {
                        newLayer = myDocument.layers.add();
                    }
                   // Give the layer the name of the image file
                   newLayer.name = fName.substring(0, fName.indexOf(".") );

                   // Place the image on the artboard
                   thisPlacedItem = newLayer.placedItems.add()
                   thisPlacedItem.file = imageList[i];

                   switch( placement9pointAlignment ) {
                        default :
                            break;
                        case "ul" : 
                            thisPlacedItem.top = myDocument.height;
                            thisPlacedItem.left = 0;
                            break;
                        case "ml" : 
                            thisPlacedItem.top = myDocument.height / 2 + thisPlacedItem.height / 2;
                            thisPlacedItem.left = 0;
                            break;
                        case "ll" : 
                            thisPlacedItem.top = thisPlacedItem.height;
                            thisPlacedItem.left = 0;
                            break;
                        case "ur" : 
                            thisPlacedItem.top = myDocument.height;
                            thisPlacedItem.left = myDocument.width - thisPlacedItem.width;
                            break;
                        case "mr" : 
                            thisPlacedItem.top = myDocument.height / 2 + thisPlacedItem.height / 2;
                            thisPlacedItem.left = myDocument.width - thisPlacedItem.width;
                            break;
                        case "lr" : 
                            thisPlacedItem.top = thisPlacedItem.height;
                            thisPlacedItem.left = myDocument.width - thisPlacedItem.width;
                            break;
                        case "um" : 
                            thisPlacedItem.top = myDocument.height;
                            thisPlacedItem.left = myDocument.width / 2 - thisPlacedItem.width / 2;
                            break;
                        case "mm" : 
                            thisPlacedItem.top = myDocument.height / 2 + thisPlacedItem.height / 2;
                            thisPlacedItem.left = myDocument.width / 2 - thisPlacedItem.width / 2;
                            break;
                        case "lm" : 
                            thisPlacedItem.top = thisPlacedItem.height;
                            thisPlacedItem.left = myDocument.width / 2 - thisPlacedItem.width / 2;
                            break;
                   }
                }
            }
        }

        if( firstImageLayer ) {
            // alert("The action has been cancelled.");
            // display error message if no supported documents were found in the designated folder
            alert("Sorry, but the designated folder does not contain any recognized image formats.\n\nPlease choose another folder.");
            myDocument.close();
            importFolderAsLayers(getFolder());
        }

    } else {
        // alert("The action has been cancelled.");
        // display error message if no supported documents were found in the designated folder
        alert("Rerun the script and choose a folder with images.");
        //importFolderAsLayers(getFolder());
    }
}

//Start the script off
importFolderAsLayers( getFolder() );

我希望能够选择一个文件夹,并使其仅导入.tga或.png文件。如果还有其他文件格式,我希望它忽略它们。

该脚本的问题在于它是通过文件名而不是扩展名搜索的。通常这可以正常工作,但是我经常收到.tga文件以及名为image_01.tga.jpeg的jpeg副本

这是一个问题,因为现在当我使用脚本时,它会导入tga和jpeg!

有人知道我该如何适应这个脚本,以便它专门按扩展名搜索?

javascript import adobe-illustrator extendscript
1个回答
0
投票

您在读取的行中使用的getFiles()方法;

getFiles()

接受var imageList = selectedFolder.getFiles(); 参数-本质上是RegExp模式。

如果将该行更改为;

mask

它将确保分配给var imageList = selectedFolder.getFiles(/\.(tga|png)$/i); 变量的文件列表仅是以imageList.tga.TGA.png结尾的文件。

然后您就不必在.PNG循环中对文件类型进行任何过滤。

© www.soinside.com 2019 - 2024. All rights reserved.