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

平面设计 adobe-illustrator PNG 插画脚本
2022-01-07 20:01:59

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

有什么想法吗?

PNG

2个回答

如果图案确实在单独的图层上,您可以使用脚本将每个图层导出为单独的 png。

Carlos Canto为 Illustrator编写了一个脚本并将其发布在 Adob​​e 论坛上。

如果链接失效,这是 Carlos 的脚本:

#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 文件放入 Adob​​e Illustrator CS(x)/Presets/[您的语言]/Scripts。重新启动 Illustrator 后,脚本应该File > Scripts在 Illustrator 中可见。

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