Here is full version of two functions for exporting color-coded zones without anti-aliasing.
The first of them adds recursively all visible objects (in all nested layers and groups) for further rasterization.
function process(item){
if (item.layers) {
for (var i = 0; i < item.layers.length; i++) {
if(item.layers[i].visible) process(item.layers[i]);
}
}
if (item.groupItems) {
for (var i = 0; i < item.groupItems.length; i++) {
if(! item.groupItems[i].hidden) process(item.groupItems[i]);
}
}
for (var i = 0; i < item.pageItems.length; i++) {
if (item.pageItems[i].typename != 'GroupItem') {
array.push(item.pageItems[i]);
}
}
}
This is main export function. It processes array z
(in my case I've prepared it first from specified layer: var z = d.layers.getByName('/Zones')
) and export rasterized PNG file without anti-aliasing.
function saveZones(name){
var exportPath = '/Source/Zones/';
var exportOptions = new ExportOptionsPNG24();
var type = ExportType.PNG24;
exportOptions.artBoardClipping = true;
exportOptions.antiAliasing = false;
exportOptions.transparency = false;
exportOptions.saveAsHTML = false;
var rasterizeOptions = new RasterizeOptions();
rasterizeOptions.antiAliasingMethod = AntiAliasingMethod.None;
rasterizeOptions.backgroundBlack = true;
rasterizeOptions.clippingMask = false;
rasterizeOptions.resolution = 72.0;
rasterizeOptions.transparency = false;
rasterizeOptions.convertSpotColors = true;
var fileExport = new File(filePath+exportPath+name);
var t = d.layers.add();
t.name = 'tmp '+name;
var tmpGroup = t.groupItems.add();
array = [];
process(z);
for (var i = array.length-1; i>=0; i--) {
tmpSel = array[i].duplicate();
tmpSel.moveToBeginning(tmpGroup);
};
tmpRast = d.rasterize(tmpGroup, d.artboardRect, rasterizeOptions);
app.activeDocument.exportFile( fileExport, type, exportOptions );
tmpRast.remove();
t.remove();
}