Экспортировать изображение из Illustrator сразу в нескольких размерах?

В дополнение к этому вопросу: как я могу экспортировать изображение из изображения Illustrator в разных размерах?

Есть ли способ сделать это сразу? Я хочу определить несколько разных размеров и экспортировать пару изображений одним нажатием кнопки. Могу ли я даже создать предустановки размера изображения? Насколько я вижу, есть только такая опция для формата выходного файла, но мне не нужно ее трогать...

Точнее мой случай:

У меня есть документ с кучей значков на разных слоях. Я хочу экспортировать каждый значок с этими несколькими разными размерами, чтобы использовать его в своем приложении для Android. Прямо сейчас, каждый раз, когда я хочу экспортировать значок, я должен

  1. Откройте "Сохранить для Интернета..."
  2. Выберите вкладку «Размер изображения».
  3. Размер шрифта.
  4. Нажмите «Применить».
  5. Нажмите «Сохранить».
  6. Изменить имя файла.
  7. Нажмите «Сохранить».
  8. Перейти к шагу 3 (умножить на количество размеров).
  9. "Сделанный".
  10. Выберите следующий слой.
  11. Перейти к шагу 1.

Есть ли хорошее решение, чтобы избежать этого кошмара?

Ответы (4)

Извините, я забыл, что написал здесь. пакетный экспорт лучше, но я все еще не могу записать все действия, которые хочу. Использование Photoshop здесь — еще одно излишество.

Я нашел лучший способ экспортировать его с помощью этого простого скрипта:

/**
* 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;
    }
}
}

Я нашел его где-то и просто изменил размеры, чтобы определить их в пикселях. Просто создайте текстовый файл, вставьте этот код, сохраните как .jsx и поместите файл в папку «скрипты» иллюстратора. Затем запустите его через File>Scripts>...

Он выполнит всю работу, которую я упомянул, за одно действие, установив имена файлов из имен слоев и поместив их в соответствующие папки. Вы можете исключить определенные слои, скрыв и заблокировав их.

Вы можете экспортировать свои значки в пакетном режиме с помощью диалогового окна «Экспорт». И дополнительно вы можете установить разрешение там. Поэтому, если вы используете несколько размеров (например, x2, x4), вы можете просто повторно экспортировать с другим разрешением .

Если вам нужны меньшие размеры исходных значков, я бы предложил действие Photoshop для дублирования и изменения размера набора значков.

Мне нравится помещать исходный файл в файл Photoshop несколько раз как связанный смарт-объект и масштабировать его до необходимого разрешения (что-то вроде листа спрайтов). Затем вы можете создавать слайсы для каждого экземпляра. Сохранение для Интернета даст вам папку со значком во всех разных разрешениях. Вы даже можете установить имена файлов экспорта, назвав фрагменты. Если вы измените исходный файл, вам просто нужно обновить связанные смарт-объекты в Photoshop и сохранить для Интернета.

Отредактированный ответ, данный Paweł Audionysos для моего собственного использования, чтобы все они сохранялись в одну папку, и было легче редактировать размеры изображений:

    /**
* 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;
        }
    }
}