拯救设计师的无聊时光:一键导出 AI 文件中的所有图片
😫 又在手动导出图片?停!
亲爱的设计师朋友们,你是否曾经历过这样的场景:
- 打开 AI 文件,发现里面塞满了嵌入图片
- 一张一张地点开,右键,导出,保存…
- 重复 100 遍后开始怀疑人生
- 最后放弃治疗,去喝咖啡了 ☕️
不用担心!今天我要分享一个神奇的脚本,它能在你喝完一口咖啡的时间里,完成所有图片的导出工作!
🎯 这个脚本能干啥?
- 自动找出所有藏在文件里的图片(就像寻宝一样!)
- 支持各种格式(JPG、PNG…通通安排!)
- 一键批量导出(解放你的双手,去摸摸猫吧 🐱)
- 自动重命名(再也不用手动改名字了)
🚀 见证奇迹的时刻
1. 先看代码
function main() {
if (app.documents.length == 0) {
alert("请至少打开一个文档。", "提示");
return;
}
var doc = app.activeDocument;
var embeddedItems = [];
// 遍历所有页面项并检查是否嵌入
for (var i = 0; i < doc.pageItems.length; i++) {
var pageItem = doc.pageItems[i];
if ((pageItem.typename == "PlacedItem" && pageItem.file == null) ||
(pageItem.typename == "RasterItem" && pageItem.embedded)) {
embeddedItems.push(pageItem);
}
}
if (embeddedItems.length == 0) {
alert("没有嵌入的对象需要导出。");
return;
}
// 让用户选择导出路径
var exportFolder = Folder.selectDialog("选择导出嵌入对象的文件夹");
if (exportFolder == null) {
alert("没有选择导出文件夹。");
return;
}
for (var i = 0; i < embeddedItems.length; i++) {
var embeddedItem = embeddedItems[i];
var fileName = "Object_" + (i + 1); // 默认命名,不带扩展名
var filePath = new File(exportFolder.fsName + "/" + fileName);
exportEmbeddedItem(embeddedItem, filePath);
}
alert("嵌入对象导出完成!");
}
function exportEmbeddedItem(item, file) {
var exportOptions;
if (item.typename == "PlacedItem") {
// 导出为其原始格式
var originalFormat = getOriginalFormat(item);
file = new File(file.fsName + originalFormat); // 添加扩展名
// 创建一个临时文档
var tempDoc = app.documents.add(DocumentColorSpace.RGB, item.width, item.height);
var tempLayer = tempDoc.layers[0];
// 复制嵌入对象到新文档
var copiedItem = item.duplicate(tempLayer, ElementPlacement.PLACEATBEGINNING);
copiedItem.position = [0, 0]; // 设置位置
// 导出
tempDoc.exportFile(file, ExportType.JPEG, exportOptions); // 将 ExportType 修改为适当的类型
tempDoc.close(SaveOptions.DONOTSAVECHANGES);
} else if (item.typename == "RasterItem") {
// 导出为 PNG
exportOptions = new ExportOptionsPNG24();
exportOptions.transparency = true;
file = new File(file.fsName + ".png"); // 添加扩展名
// 创建一个临时文档
var tempDoc = app.documents.add(DocumentColorSpace.RGB, item.width, item.height);
var tempLayer = tempDoc.layers[0];
// 复制嵌入对象到新文档
var copiedItem = item.duplicate(tempLayer, ElementPlacement.PLACEATBEGINNING);
copiedItem.position = [0, 0]; // 设置位置
// 导出
tempDoc.exportFile(file, ExportType.PNG24, exportOptions);
tempDoc.close(SaveOptions.DONOTSAVECHANGES);
}
}
function getOriginalFormat(item) {
// 根据嵌入对象的内容推断原始格式
var fileExtension = ".jpg"; // 默认扩展名
if (item.file) {
var fileName = item.file.name;
fileExtension = fileName.substring(fileName.lastIndexOf("."));
}
return fileExtension;
}
main();
2. 复制代码
复制代码,保存为 export-ai-images.jsx
,然后等待奇迹发生(或者至少是代码不报错)🤞
3. 运行脚本
- 打开你的 AI(对,就是那个图标)
- 打开需要处理的文件(确保里面有图片哦)
- 文件 > 脚本 > 其他脚本…,选择
export-ai-images.jsx
,然后… 魔法发生了!(如果没有,检查一下你的咖啡有没有喝完)✨ - 选个保存的地方
- 然后?没有然后了!去喝杯咖啡吧 ☕️
⚠️ 友情提示
- 记得先保存文件(以防万一,你懂的)
- 确保电脑还有点存储空间(不然就尴尬了)
- 大文件可能需要等一会儿(趁机休息一下眼睛)
- 某些特殊格式可能会耍脾气(淡定,这是正常的)
🎉 结语
有了这个脚本,你就可以:
- 告别重复性工作
- 省下的时间去创作
- 或者…多刷会儿视频 😉
记住,工具就是用来让生活更轻松的。如果你有什么好主意,欢迎来和我分享!
🌟 写代码不是为了折磨自己,而是为了让生活更有趣!
希望这个小工具能让你的设计工作更轻松愉快!如果觉得好用,别忘了分享给其他被重复工作折磨的设计师朋友们~