如何将Illustrator图层导出为单个图像?


15

我有一个包含模式的Illustrator文件。我想将每个图案导出为一个单独的图像,以供我尝试使用的这个名为Sketch的新程序使用。是否存在将图层导出为PNG或SVG的批处理脚本?我想将每个几何图案都提供为PNG,而不是一个大文件。

有什么想法吗?

png

Answers:


14

如果这些模式确实在单独的图层上,则可以使用脚本将每个图层导出为单独的png。

卡洛斯·坎托Carlos Canto为Illustrator编写了一个脚本,并将其发布在Adobe论坛中。

万一链接腐烂,这是卡洛斯的脚本:

#target Illustrator

//  script.name = exportLayersAsCSS_PNGs.jsx;
//  script.description = mimics the Save for Web, export images as CSS Layers (images only);
//  script.requirements = an open document; tested with CS5 on Windows. 
//  script.parent = carlos canto // 05/24/13; All rights reseved
//  script.elegant = false;


/**
* export layers as PNG
* @author Niels Bosma
*/
// Adapted to export images as CSS Layers by CarlosCanto


if (app.documents.length>0) {
    main();
}
else alert('Cancelled by user');


function main() {
    var document = app.activeDocument;
    var afile = document.fullName;
    var filename = afile.name.split('.')[0];


    var folder = afile.parent.selectDlg("Export as CSS Layers (images only)...");


    if(folder != null)
    { 
        var activeABidx = document.artboards.getActiveArtboardIndex();
        var activeAB = document.artboards[activeABidx]; // get active AB        
        var abBounds = activeAB.artboardRect;// left, top, right, bottom


        showAllLayers();
        var docBounds = document.visibleBounds;
        activeAB.artboardRect = docBounds;


        var options = new ExportOptionsPNG24();
        options.antiAliasing = true;
        options.transparency = true;
        options.artBoardClipping = true;

        var n = document.layers.length;
        hideAllLayers ();
        for(var i=n-1, k=0; i>=0; i--, k++)
        {
            //hideAllLayers();
            var layer = document.layers[i];
            layer.visible = true;


            var file = new File(folder.fsName + '/' +filename+ '-' + k +".png");

            document.exportFile(file,ExportType.PNG24,options);
            layer.visible = false;
        }

        showAllLayers();
        activeAB.artboardRect = abBounds;
    }


    function hideAllLayers()
    {
        forEach(document.layers, function(layer) {
            layer.visible = false;
        });
    }


    function showAllLayers()
    {
        forEach(document.layers, function(layer) {
            layer.visible = true;
        }); 
    }


    function forEach(collection, fn)
    {
        var n = collection.length;
        for(var i=0; i<n; ++i)
        {
            fn(collection[i]);
        }
    }
}

将其复制并粘贴到文本文件中,并使用.jsx后缀保存该文本文件。然后将.jsx文件放入Adobe Illustrator CS(x)/ Presets / [您的语言] /脚本。重新启动Illustrator之后,该脚本应该File > Scripts在Illustrator中可见。


仅供参考,上面发布的脚本在Illustrator CC中不起作用,它给了我:错误8,语法错误。第1行:

1
该脚本在Illustrator CC中的工作原理绝对不错。
斯科特

2
我也在第1行上出现语法错误。当我重新打开.jsx时,原始代码第1行上方的其他代码来自上述代码。我删除了#target Illustrator以上的所有内容,并保存了.jsx文件。我重新启动了Illustrator,脚本现在可以正常工作了。我也在使用CC

这是更新的版本,在文件名中使用层名称而不是数字计数器(因此,“ mydoc-layername.png”而不是“ mydoc-1.png”)...如果有人需要像我一样。 gist.github.com/34e54d199de123b8e3c50a305f23115e
克里斯·艾默生

5

为了简化工作流程和提高速度,我可能会使用切片工具为各个模式创建切片,然后使用Save for Web确保在“导出:”下拉列表中选择了“所有切片”。如果我是从头开始构建的,则将每个图案放在其自己的画板上(您仍然可以这样做),并在选中“使用画板”选项的情况下使用“文件”>“导出”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.