¿Exportar una imagen de Illustrator con varios tamaños a la vez?

Además de esta pregunta, ¿cómo puedo exportar una imagen de una imagen de Illustrator en varios tamaños?

¿Hay alguna manera de que pueda hacer esto a la vez? Deseo definir algunos tamaños diferentes y exportar un par de imágenes con solo hacer clic en un botón. ¿Puedo incluso crear ajustes preestablecidos de tamaño de imagen? Por lo que puedo ver, solo existe esa opción para el formato de archivo de salida, pero no necesito tocarla ...

Más precisamente mi caso es:

Tengo un documento con un montón de iconos en diferentes capas. Quiero exportar cada ícono con esos pocos tamaños diferentes para usarlo en mi aplicación de Android. Ahora mismo, cada vez que quiero exportar un icono tengo que

  1. Abra "Guardar para web..."
  2. Seleccione la pestaña "Tamaño de imagen"
  3. Tamaño del tipo.
  4. Presiona "Aplicar".
  5. Clic en Guardar".
  6. Cambiar nombre de archivo.
  7. Presiona "Guardar".
  8. Vaya al paso 3 (veces el número de tamaños).
  9. "Hecho".
  10. Elija la siguiente capa.
  11. Salta al paso 1.

¿Hay alguna buena solución para evitar esta pesadilla?

Respuestas (4)

Lo siento, olvidé que publiqué aquí. la exportación por lotes es mejor, pero todavía no puedo registrar todas las acciones que deseo. Involucrar a Photoshop aquí es otra exageración.

Encontré la mejor manera de exportarlo con este simple script:

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

Lo encontré en alguna parte y solo modifiqué los tamaños para definirlos en píxeles. Simplemente cree un archivo de texto, pegue este código, guárdelo como .jsx y coloque el archivo en la carpeta "scripts" de Illustrator. Luego ejecútelo a través de Archivo>Scripts>...

Hará todo el trabajo que mencioné en una sola acción, configurando los nombres de los archivos a partir de los nombres de las capas y colocándolos en las carpetas apropiadas. Puede excluir ciertas capas ocultándolas y bloqueándolas.

Puede exportar por lotes sus íconos usando el diálogo Exportar. Y, además, puede establecer la resolución allí. Entonces, si está utilizando varios tamaños (como x2, x4), simplemente puede volver a exportar con una resolución diferente .

Si necesita tamaños más pequeños de los iconos de origen, sugeriría una acción de Photoshop para duplicar y cambiar el tamaño del conjunto de iconos.

Me gusta colocar el archivo de origen en un archivo de Photoshop varias veces como un objeto inteligente vinculado y escalarlo a las resoluciones necesarias (algo así como una hoja de sprites). Luego puede crear segmentos para cada instancia. Guardar para la web le dará una carpeta con el ícono en todas las diferentes resoluciones. Incluso puede establecer los nombres de archivo de los archivos de exportación nombrando los sectores. Si cambia su archivo de origen, solo necesita actualizar los objetos inteligentes vinculados en Photoshop y guardarlos para la web.

Respuesta editada dada por Paweł Audionysos para mis propios usos, por lo que todos se guardan en la misma carpeta y es más fácil editar los tamaños de imagen:

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