Ein Bild aus Illustrator mit mehreren Größen gleichzeitig exportieren?

Zusätzlich zu dieser Frage: Wie kann ich ein Bild aus einem Illustrator-Bild in mehreren Größen exportieren?

Gibt es eine Möglichkeit, dass ich das auf einmal machen kann? Ich möchte einige verschiedene Größen definieren und einige Bilder mit einem Klick auf eine Schaltfläche exportieren. Kann ich sogar Voreinstellungen für die Bildgröße erstellen? Soweit ich sehen kann, gibt es nur eine solche Option für das Ausgabedateiformat, aber ich muss sie nicht berühren ...

Genauer gesagt ist mein Fall:

Ich habe ein Dokument mit einer Reihe von Symbolen auf verschiedenen Ebenen. Ich möchte jedes Symbol mit diesen wenigen unterschiedlichen Größen exportieren, um es in meiner Android-App zu verwenden. Im Moment muss ich jedes Mal, wenn ich ein Symbol exportieren möchte

  1. Öffnen Sie "Für Web speichern..."
  2. Wählen Sie die Registerkarte "Bildgröße".
  3. Schriftgröße.
  4. Klicken Sie auf „Anwenden“.
  5. Klicken Sie auf "Speichern".
  6. Dateinamen ändern.
  7. Klicken Sie auf "Speichern".
  8. Springe zu Schritt 3 (mal Anzahl der Größen).
  9. "Erledigt".
  10. Wählen Sie die nächste Ebene.
  11. Springe zu Schritt 1.

Gibt es eine gute Lösung, um diesen Alptraum zu vermeiden?

Antworten (4)

Entschuldigung, ich habe vergessen, dass ich hier gepostet habe. Batch-Export ist besser, aber ich kann immer noch nicht alle gewünschten Aktionen aufzeichnen. Photoshop hier einzubeziehen ist ein weiterer Overkill.

Ich habe den besten Weg gefunden, es mit diesem einfachen Skript zu exportieren:

/**
* Remixer: @herkulano (http://www.herkulano.com)
* Thanks to: Niels Bosma (niels.bosma@motorola.com)
*/

var folder = Folder.selectDialog();
var document = app.activeDocument;

if (document && folder) {
$.writeln(document.width);
saveToRes (16, "ldpi");
saveToRes(32, "mdpi");
saveToRes(64, "hdpi");
saveToRes(128, "xhdpi");
//saveToRes(300, "xxhdpi");
//saveToRes(400, "xxxhdpi");
}

function saveToRes(scaleTo, resFolderName) {


    scaleTo = scaleTo/document.width*100.0;
     $.writeln(scaleTo);
     $.writeln((scaleTo*document.width)/100.0);
    //return;

var i, layer, 
    file, options,
    resFolder;

resFolder = new Folder(folder.fsName + "/drawable-" + resFolderName);

if (!resFolder.exists) {
    resFolder.create();
}

for (i = document.layers.length - 1; i >= 0; i--) {
    layer = document.layers[i];
    if (!layer.locked && layer.name.indexOf("!") === -1) {
        hideAllLayers();
        layer.visible = true;

        file = new File(resFolder.fsName+ "/" + layer.name + ".png");
        $.writeln(resFolder.fsName);
        $.writeln(file.fsName);
        $.writeln(layer.name);

        options = new ExportOptionsPNG24();
        options.antiAliasing = true;
        options.transparency = true;
        options.artBoardClipping = true;
        options.verticalScale = scaleTo;
        options.horizontalScale = scaleTo;

        document.exportFile(file, ExportType.PNG24, options);
    }
}
}

function hideAllLayers() {
var i, layer;

for (i = document.layers.length - 1; i >= 0; i--) {
    layer = document.layers[i];
    if (!layer.locked && layer.name.indexOf("!") === -1) {
        layer.visible = false;
    }
}
}

Ich habe es irgendwo gefunden und nur die Größen geändert, um sie in Pixeln zu definieren. Erstellen Sie einfach eine Textdatei, fügen Sie diesen Code ein, speichern Sie sie als .jsx und legen Sie die Datei im Ordner „Scripts“ des Illustrators ab. Führen Sie es dann durch Datei> Skripte> ...

Es erledigt alle von mir erwähnten Aufgaben in einer einzigen Aktion, indem Dateinamen aus Ebenennamen festgelegt und in den entsprechenden Ordnern abgelegt werden. Sie können bestimmte Ebenen ausschließen, indem Sie sie ausblenden und sperren.

Sie können Ihre Symbole mit dem Exportdialog stapelweise exportieren . Und zusätzlich kann man dort die Auflösung einstellen. Wenn Sie also mehrere Größen (z. B. x2, x4) verwenden, können Sie einfach mit einer anderen Auflösung erneut exportieren .

Wenn Sie kleinere Größen von Ihren Quellsymbolen benötigen, würde ich eine Photoshop-Aktion vorschlagen, um das Symbolset zu duplizieren und die Größe zu ändern.

Ich platziere die Quelldatei gerne mehrmals als verknüpftes Smart-Objekt in einer Photoshop-Datei und skaliere sie auf die erforderlichen Auflösungen (ähnlich wie ein Sprite-Sheet). Dann können Sie Slices für jede Instanz erstellen. Beim Speichern für das Web erhalten Sie dann einen Ordner mit dem Symbol in allen verschiedenen Auflösungen. Sie können sogar die Dateinamen der Exportdateien festlegen, indem Sie die Slices benennen. Wenn Sie Ihre Quelldatei ändern, müssen Sie nur die verknüpften Smart-Objekte in Photoshop aktualisieren und für das Web speichern.

Bearbeitete Antwort von Paweł Audionysos für meine eigenen Zwecke, damit sie alle im selben Ordner gespeichert werden und es einfacher ist, die Bildgrößen zu bearbeiten:

    /**
* Edited by Justin Golden (justingolden21.github.io)
* https://graphicdesign.stackexchange.com/questions/53177/export-an-image-from-illustrator-with-multiple-sizes-at-once
* Remixer: @herkulano (http://www.herkulano.com)
* Thanks to: Niels Bosma (niels.bosma@motorola.com)
*/

var folder = Folder.selectDialog();
var document = app.activeDocument;

if (document && folder) {
    $.writeln(document.width);
    var sizes = [16,32,64,128];
    for (var i = 0; i < sizes.length; i++) {
        saveToRes(sizes[i]);
    }
}

function saveToRes(scaleTo) {
    var num = scaleTo;

    scaleTo = scaleTo/document.width*100.0;
     $.writeln(scaleTo);
     $.writeln((scaleTo*document.width)/100.0);

    var i, layer, file, options;

    for (i = document.layers.length - 1; i >= 0; i--) {
        layer = document.layers[i];
        if (!layer.locked && layer.name.indexOf("!") === -1) {
            hideAllLayers();
            layer.visible = true;

            file = new File(folder.fsName+ "/" + layer.name + "-" + num + ".png");
            $.writeln(folder.fsName);
            $.writeln(file.fsName);
            $.writeln(layer.name);

            options = new ExportOptionsPNG24();
            options.antiAliasing = true;
            options.transparency = true;
            options.artBoardClipping = true;
            options.verticalScale = scaleTo;
            options.horizontalScale = scaleTo;

            document.exportFile(file, ExportType.PNG24, options);
        }
    }
}

function hideAllLayers() {
    var i, layer;
    for (i = document.layers.length - 1; i >= 0; i--) {
        layer = document.layers[i];
        if (!layer.locked && layer.name.indexOf("!") === -1) {
            layer.visible = false;
        }
    }
}