将符号批量导出到 PNG - Illustrator
Batch Export Symbols to PNG - Illustrator
我原本打算 post 在 https://graphicdesign.stackexchange.com/ 做这个,但由于这是一个代码问题,所以在这里似乎更合适。
我想将打开的 Illustrator 文档中的所有符号导出为单独的 png。
下面的 javascript (.jsx) 脚本非常接近,但是导出的 png 是空的,这告诉我仍然缺少一些重要的东西。
缺少的元素可能是什么?
var doc = app.activeDocument;
var symbolCount = doc.symbols.length;
$.writeln(symbolCount + " symbols"); // log symbol count
for(var i = 0; i < doc.symbols.length; i++) {
$.writeln(doc.symbols[i].name); // log symbol names
var dir = doc.path; // save to document's folder
dir.changePath(doc.symbols[i].name + '.png');
savePNG(dir);
}
// Save PNG file
function savePNG(file) {
// export SAVE-FOR-WEB options
var exp = new ExportOptionsPNG24();
exp.transparency = true;
// export as SAVE-FOR-WEB
doc.exportFile(file, ExportType.PNG24, exp);
}
PS。这是 Illustrator 脚本文档的 link:
http://adobe.ly/1JxLlUK
doc.exportFile
按照您的要求进行操作 – 因此它会导出您的 文档 .
的 PNG 文件
要导出符号,请将它们一一放入您的文档中,将整个内容导出为 PNG(请注意,文档本身的任何内容也将被导出!),然后删除符号再举个例子。
它只需要对您的 for
循环进行少量添加:
for(var i = 0; i < doc.symbols.length; i++) {
$.writeln(doc.symbols[i].name); // log symbol names
s = doc.symbolItems.add(doc.symbols[i]); // place a Symbol instance
var dir = doc.path; // save to document's folder
dir.changePath(doc.symbols[i].name + '.png');
savePNG(dir);
s.remove(); // .. and delete it here
}
这会为我的默认符号集生成以下文件列表:
对于其他需要此功能的人,这是我将脚本变成的内容:
感谢 Jongware 的帮助。
/*
* Export Symbols as PNGs - Illustrator
* --------------------------------------
* Created By Shane Parsons - 30PT Design Inc.
* http://30ptdesign.com/
*/
var doc = app.activeDocument;
var symbolCount = doc.symbols.length;
if (symbolCount >= 1) {
if (confirm("Are all your layers hidden?")) {
// choose directory
var dest = Folder(doc.path).selectDlg();
// folder chosen
if (dest) {
// create temp layer
doc.layers.add();
// loop through symbols
for (var i = 0; i < doc.symbols.length; i++) {
// place a symbol instance - temp
var symbol = doc.symbolItems.add(doc.symbols[i]);
// assign name
var filename = (doc.symbols[i].name)
// export symbols
savePNG(dest, filename);
// delete temp symbol instance
symbol.remove();
}
// remove temp layer
doc.layers[0].remove();
}
}
function savePNG(dest, filename) {
// save options
var type = ExportType.PNG24;
var options = new ExportOptionsPNG24();
options.transparency = true;
// file
var file = new File(dest + "/" + filename);
// export
doc.exportFile(file, type, options);
}
} else {
alert("You don't have any symbols in this document");
}
@shane
这是一个非常棒的脚本,感谢制作!我以它为基础来适应我的工作流程。我注意到的一件事是导出的 PNG 与符号内的图形不具有相同的尺寸。下面是图片导出的放大截图;
since I'm not allowed to post images yet, here's a link
83x83px 的矢量矩形导出为 84x83px PNG
我通过将符号放在文档的 0,0 引用处更正了这个问题
// place a symbol instance - temp
var symbol = doc.symbolItems.add(doc.symbols[i]);
symbol.top = 0;
symbol.left = 0;
那就让代码运行顺理成章吧。我自己不是程序员,但它对我有用。
我原本打算 post 在 https://graphicdesign.stackexchange.com/ 做这个,但由于这是一个代码问题,所以在这里似乎更合适。
我想将打开的 Illustrator 文档中的所有符号导出为单独的 png。
下面的 javascript (.jsx) 脚本非常接近,但是导出的 png 是空的,这告诉我仍然缺少一些重要的东西。
缺少的元素可能是什么?
var doc = app.activeDocument;
var symbolCount = doc.symbols.length;
$.writeln(symbolCount + " symbols"); // log symbol count
for(var i = 0; i < doc.symbols.length; i++) {
$.writeln(doc.symbols[i].name); // log symbol names
var dir = doc.path; // save to document's folder
dir.changePath(doc.symbols[i].name + '.png');
savePNG(dir);
}
// Save PNG file
function savePNG(file) {
// export SAVE-FOR-WEB options
var exp = new ExportOptionsPNG24();
exp.transparency = true;
// export as SAVE-FOR-WEB
doc.exportFile(file, ExportType.PNG24, exp);
}
PS。这是 Illustrator 脚本文档的 link: http://adobe.ly/1JxLlUK
doc.exportFile
按照您的要求进行操作 – 因此它会导出您的 文档 .
要导出符号,请将它们一一放入您的文档中,将整个内容导出为 PNG(请注意,文档本身的任何内容也将被导出!),然后删除符号再举个例子。
它只需要对您的 for
循环进行少量添加:
for(var i = 0; i < doc.symbols.length; i++) {
$.writeln(doc.symbols[i].name); // log symbol names
s = doc.symbolItems.add(doc.symbols[i]); // place a Symbol instance
var dir = doc.path; // save to document's folder
dir.changePath(doc.symbols[i].name + '.png');
savePNG(dir);
s.remove(); // .. and delete it here
}
这会为我的默认符号集生成以下文件列表:
对于其他需要此功能的人,这是我将脚本变成的内容:
感谢 Jongware 的帮助。
/*
* Export Symbols as PNGs - Illustrator
* --------------------------------------
* Created By Shane Parsons - 30PT Design Inc.
* http://30ptdesign.com/
*/
var doc = app.activeDocument;
var symbolCount = doc.symbols.length;
if (symbolCount >= 1) {
if (confirm("Are all your layers hidden?")) {
// choose directory
var dest = Folder(doc.path).selectDlg();
// folder chosen
if (dest) {
// create temp layer
doc.layers.add();
// loop through symbols
for (var i = 0; i < doc.symbols.length; i++) {
// place a symbol instance - temp
var symbol = doc.symbolItems.add(doc.symbols[i]);
// assign name
var filename = (doc.symbols[i].name)
// export symbols
savePNG(dest, filename);
// delete temp symbol instance
symbol.remove();
}
// remove temp layer
doc.layers[0].remove();
}
}
function savePNG(dest, filename) {
// save options
var type = ExportType.PNG24;
var options = new ExportOptionsPNG24();
options.transparency = true;
// file
var file = new File(dest + "/" + filename);
// export
doc.exportFile(file, type, options);
}
} else {
alert("You don't have any symbols in this document");
}
@shane
这是一个非常棒的脚本,感谢制作!我以它为基础来适应我的工作流程。我注意到的一件事是导出的 PNG 与符号内的图形不具有相同的尺寸。下面是图片导出的放大截图;
since I'm not allowed to post images yet, here's a link
83x83px 的矢量矩形导出为 84x83px PNG
我通过将符号放在文档的 0,0 引用处更正了这个问题
// place a symbol instance - temp
var symbol = doc.symbolItems.add(doc.symbols[i]);
symbol.top = 0;
symbol.left = 0;
那就让代码运行顺理成章吧。我自己不是程序员,但它对我有用。