#target Illustrator
function 图像裁剪() {
    if (app.documents.length > 0) {
        var 当前文档 = app.activeDocument;
        var 选区 = 当前文档.selection;
        if (选区.length == 2)
            图像裁剪处理(选区[0], 选区[1]);
        else alert('请选择一张图像和一个矩形(用作裁剪区域),然后重试');
        return;
    }
    else alert('没有文档可处理'); return;
    function 图像裁剪处理(矩形, 图像) {
        if (矩形.typename == 'PathItem' && (图像.typename == 'RasterItem' || 图像.typename == 'PlacedItem')) {
            
            var 栅格化选项 = new RasterizeOptions;
            
            if(ScriptUI.environment.keyboardState.shiftKey) { 
                栅格化选项.antiAliasingMethod = AntiAliasingMethod.TYPEOPTIMIZED;
            }
            else { 
                栅格化选项.antiAliasingMethod = AntiAliasingMethod.ARTOPTIMIZED;
            } 
            
            if(ScriptUI.environment.keyboardState.altKey) { 
                var 标题 = '图像裁剪脚本';
                var a = prompt('请输入目标分辨率', 72, 标题);
                if (a == null) return;
                else 栅格化选项.resolution = Number(a);
            }
            else {
                栅格化选项.resolution = 获取对象分辨率(图像);
            }
            
            当前文档.rasterize(图像, 矩形.geometricBounds, 栅格化选项);
            矩形.remove();
        }
        else alert('绘制一个矩形,将其置于位图图像上方,然后重试');
    }
    function 获取对象分辨率(对象) {
        var 分辨率宽 = Math.abs(72 / 对象.matrix.mValueA); 
        var 分辨率高 = Math.abs(72 / 对象.matrix.mValueD); 
        var 对象分辨率 = Math.round(分辨率宽 > 分辨率高 ? 分辨率宽 : 分辨率高);
  
        return 对象分辨率; 
    }
}
图像裁剪()