裁剪 EPS | C# .NET API 解决方案
概述
本文讲解如何使用 C# 裁剪 EPS 文件。内容涵盖以下主题:
C# 裁剪 EPS 文件说明
裁剪图像的操作会改变图像的一个或多个边距:左、右、上、下。换句话说,它会从边缘剪切图像的内容。因此,最终的 EPS 图像大小将始终小于原始大小。由于我们的解决方案不处理内容,而是处理 EPS 文件的头文件,因此文件的体积不会改变。
EPS 图像的边距由 BoundingBox 元数据定义。为了进行裁剪,或者说设置新的边界框,我们需要知道 EPS 图像现有的边界框。否则,我们可能会将新边界框的值赋给现有边界框之外,从而导致错误。 因此,在 C# 中裁剪 EPS 图像的步骤如下:
- 使用包含 EPS 文件的输入流初始化 PsDocument 对象。
- 使用静态方法 ExtractEpsBoundingBox 提取图像的现有边界框。
- 创建生成的 EPS 文件的输出流。
- 创建新的边界框。
- 使用静态方法 CropEps 裁剪带有新边界框的 PsDocument 对象。
在 C# 中裁剪 EPS
在以下 C# 代码片段中,我们获取图像的现有边界框并裁剪 EPS:
1// Cropping EPS file.
2
3// Initialize PS document with EPS file
4PsDocument document = new PsDocument(DataDir + "input.eps");
5
6string outputFileName = "output_crop.eps";
7
8//Get initial bounding box of EPS image
9int[] initialBoundingBox = document.ExtractEpsBoundingBox();
10
11//Create new bounding box
12//Bounding box is represented by 4 numbers: x0, y0, x, y, where x0 - left margin, y0 - top margin, x - (x0 + width), y - (y0 + height)
13float[] newBoundingBox = new float[] { 260, 300, 480, 432 };
14
15//Crop EPS image and save to the output stream
16//Croping of image is changing of its bounding box so that new values of bounding box will be within initial bounding box, that is
17//initialBoundingBox[0] <= newBoundingBox[0] <= initialBoundingBox[2]
18//initialBoundingBox[1] <= newBoundingBox[1] <= initialBoundingBox[3]
19//initialBoundingBox[0] <= newBoundingBox[2] <= initialBoundingBox[2]
20//initialBoundingBox[1] <= newBoundingBox[3] <= initialBoundingBox[3]
21document.CropEps(OutputDir + outputFileName, newBoundingBox);
初始图像
裁剪后的图像
构建 EPS 裁剪 AI 代理
如果您希望基于 Aspose.Page 构建自己的 AI 代理,实现自动化图像处理和 EPS 矢量裁剪,其实现流程可能如下所示:
AI 代理不会尝试栅格化和视觉切片文件,而是原生计算坐标边界框,从而提供优化的工作流程。
- 几何意图提取(LLM 分析层)
用户输入 EPS 文件以及自然语言布局约束(例如,“裁剪掉底部 50 像素的白色边距”或“隔离中心 200x200 像素的图形区域”)。
LLM 将提示转换为结构坐标修改(例如,识别相对于左侧、顶部、右侧或底部边界框的调整)。
- 原生边界框导入
为了防止 LLM 错误地生成超出图形实际尺寸的裁剪坐标(这将引发编译器异常),代理会查询原始文档属性。系统通过 PsDocument 加载目标资源,并调用 document.ExtractEpsBoundingBox()。
此数组 ([x0, y0, x1, y1]) 作为 AI 的保护性边界约束:
约束循环:initialBoundingBox[0] ≤ newBoundingBox[0] ≤ initialBoundingBox[2]
- 坐标重新计算和校准(映射层)
代理将提取的边界数组和用户的结构提示传递给其内部计算矩阵。然后,它计算目标坐标参数 float[] newBoundingBox。如果用户要求中心聚焦对齐,AI 将计算相对于原始参数的几何中心,并均匀偏移边界值。
- 元数据修补和资源序列化(执行节点)
校准后的数组直接写入文档结构,无需初始化完整的、资源密集型的画布重新渲染。
系统执行原生 document.CropEps (outputPath, newBoundingBox) 命令。通过仅更新 PostScript 页面描述,系统可立即向终端界面提供完美裁剪的文件。
在我们的EPS 裁剪网页应用程序上在线评估 EPS 裁剪效果。您可以在几秒钟内裁剪 EPS 文件并下载结果。
您可以从 GitHub下载示例和数据文件。