/* Separate export of selected paths or text to PNG with HEX color name Discussion: https://community.adobe.com/t5/illustrator-discussions/workflow-is-there-a-faster-way-to-change-the-color-of-a-layer-on-multiple-images-randomly/td-p/12872250 Author: Sergey Osokin, email: hi@sergosokin.ru Check my other scripts: https://github.com/creold Donate (optional): If you find this script helpful, you can buy me a coffee - via Buymeacoffee https://www.buymeacoffee.com/aiscripts - via DonatePay https://new.donatepay.ru/en/@osokin - via Donatty https://donatty.com/sergosokin - via YooMoney https://yoomoney.ru/to/410011149615582 - via QIWI https://qiwi.com/n/OSOKIN */ //@target illustrator app.preferences.setBooleanPreference('ShowExternalJSXWarning', false); // Fix drag and drop a .jsx file // Main function function main() { if (!documents.length) return; if (selection.length == 0 || selection.typename == 'TextRange') return; var doc = activeDocument, docSel = selection, docFolder = Folder(doc.path).exists ? doc.path : Folder.desktop, isReplaceFile = false; // Replace when names match var exportOptions = new ExportOptionsPNG24(); exportOptions.antiAliasing = true; exportOptions.transparency = true; selection = null; for (var i = 0, len = docSel.length; i < len; i++) { exportAsPNG(docSel[i], docFolder, isReplaceFile, exportOptions); } } // Export single item function exportAsPNG(item, folder, isReplace, exportOptions) { var rgb = {}; if (item.typename == 'CompoundPathItem' && item.pathItems) { rgb = item.pathItems[0].fillColor; } else if (item.typename == 'PathItem') { rgb = item.fillColor; } else if (item.typename == 'TextFrame') { rgb = item.textRange.fillColor; } else { return; } if (rgb == undefined || rgb.typename !== 'RGBColor') return; var hex = rgb2Hex(rgb.red, rgb.green, rgb.blue).toUpperCase(), fileName = folder + '/' + hex, file = File(fileName + '.png'); if (file.exists && !isReplace) { var counter = 2; do { var newName = fileName + '_' + counter++; file = File(newName + '.png'); } while (file.exists) } item.selected = true; app.activeDocument.exportSelectionAsPNG(file, exportOptions); selection = null; } // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb function rgb2Hex(r, g, b) { return componentToHex(r) + componentToHex(g) + componentToHex(b); } function componentToHex(c) { var hex = c.toString(16); return hex.length == 1 ? '0' + hex : hex; } // Run script try { main(); } catch (e) {}