วิธีส่งเลเยอร์ Illustrator เป็นรูปภาพแต่ละภาพได้อย่างไร


15

ฉันมีไฟล์ Illustrator ที่มีรูปแบบ ฉันต้องการส่งออกแต่ละรูปแบบเป็นรูปภาพแต่ละรูปเพื่อใช้ในโปรแกรมใหม่นี้ที่ฉันพยายามเรียกว่า Sketch มีสคริปต์การประมวลผลแบบแบทช์ที่ส่งเลเยอร์เป็น PNG หรือ SVG หรือไม่ ฉันต้องการให้แต่ละรูปแบบทางเรขาคณิตเป็น PNG ไม่ใช่ไฟล์ขนาดใหญ่หนึ่งไฟล์

ความคิดใด ๆ

PNG

คำตอบ:


14

หากรูปแบบนั้นอยู่ในแต่ละเลเยอร์คุณอาจจะสามารถใช้สคริปต์เพื่อส่งออกแต่ละเลเยอร์เป็นแต่ละ png ได้

Carlos Cantoเขียนสคริปต์สำหรับ Illustratorและโพสต์ไว้ในฟอรัม Adobe

ในกรณีที่ลิงค์เน่าสคริปต์ของ 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 ลงใน Adobe Illustrator CS (x) / Presets / [ภาษาของคุณ] / สคริปต์ หลังจากเปิดตัว Illustrator อีกครั้งสคริปต์ควรจะปรากฏให้เห็นผ่านทางFile > ScriptsIllustrator


FYI สคริปต์ที่โพสต์ด้านบนไม่ทำงานใน 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
Chris Emerson

5

สำหรับความเรียบง่ายและความเร็วของเวิร์กโฟลว์ฉันอาจใช้เครื่องมือชิ้นเพื่อสร้างส่วนย่อยสำหรับแต่ละรูปแบบจากนั้นบันทึกสำหรับเว็บตรวจสอบให้แน่ใจว่าได้เลือก "ชิ้นส่วนทั้งหมด" ในเมนูแบบเลื่อนลง "ส่งออก:" ถ้าฉันกำลังสร้างจากศูนย์ฉันจะใส่แต่ละรูปแบบลงในบอร์ดของตัวเอง (ซึ่งคุณสามารถทำได้) และใช้ไฟล์> ส่งออกด้วยตัวเลือก "ใช้อาร์ตบอร์ด" ที่เลือกไว้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.