Illustrator 2024 提取所有图片(带蒙版)到新图层的脚本
大佬帮把这个改下,这个脚本提取图片到新图层,蒙版被释放了,帮改成蒙版不要释放。#target illustrator
var doc = app.activeDocument;
var newLayer = doc.layers.add();
newLayer.name = "图片";
var itemsToMove = [];
var maskInfo = [];
// 遍历文档中的所有页面项
for (var i = 0; i < doc.pageItems.length; i++) {
var item = doc.pageItems;
// 提取嵌入/链接图片
if (item.typename === "PlacedItem" || item.typename === "RasterItem") {
itemsToMove.push(item);
}
// 提取包含剪切蒙版的编组
if (item.typename === "GroupItem" && item.clipped) {
itemsToMove.push(item);
var currentMaskInfo = {
mask: null,
maskedItems: []
};
for (var j = 0; j < item.pageItems.length; j++) {
var subItem = item.pageItems;
if (subItem.isMask) {
currentMaskInfo.mask = subItem;
} else {
currentMaskInfo.maskedItems.push(subItem);
}
}
maskInfo.push(currentMaskInfo);
}
}
// 移动符合条件的元素到新图层
for (var k = 0; k < itemsToMove.length; k++) {
var targetItem = itemsToMove;
targetItem.move(newLayer, ElementPlacement.PLACEATEND);
}
// 在新图层中重新应用剪切蒙版
for (var l = 0; l < maskInfo.length; l++) {
var currentInfo = maskInfo;
var newGroup = newLayer.groupItems.add();
// 移动蒙版到新组
if (currentInfo.mask) {
currentInfo.mask.move(newGroup, ElementPlacement.PLACEATSTART);
currentInfo.mask.isMask = true;
}
// 移动被蒙版的对象到新组
for (var m = 0; m < currentInfo.maskedItems.length; m++) {
currentInfo.maskedItems.move(newGroup, ElementPlacement.PLACEATEND);
}
// 应用剪切蒙版
if (newGroup.pageItems.length >= 2) {
newGroup.clipped = true;
}
}
alert("已提取 " + itemsToMove.length + " 个对象到新图层,并重新应用剪切蒙版!");
页:
[1]