裁剪 EPS | C# .NET API 解决方案

概述

本文讲解如何使用 C# 裁剪 EPS 文件。内容涵盖以下主题:

C# 裁剪 EPS 文件说明

裁剪图像的操作会改变图像的一个或多个边距:左、右、上、下。换句话说,它会从边缘剪切图像的内容。因此,最终的 EPS 图像大小将始终小于原始大小。由于我们的解决方案不处理内容,而是处理 EPS 文件的头文件,因此文件的体积不会改变。

EPS 图像的边距由 BoundingBox 元数据定义。为了进行裁剪,或者说设置新的边界框,我们需要知道 EPS 图像现有的边界框。否则,我们可能会将新边界框的值赋给现有边界框之外,从而导致错误。 因此,在 C# 中裁剪 EPS 图像的步骤如下:

  1. 使用包含 EPS 文件的输入流初始化 PsDocument 对象。
  2. 使用静态方法 ExtractEpsBoundingBox 提取图像的现有边界框。
  3. 创建生成的 EPS 文件的输出流。
  4. 创建新的边界框。
  5. 使用静态方法 CropEps 裁剪带有新边界框的 PsDocument 对象。

您可以通过免费的在线裁剪 EPS检查 Aspose.Page EPS 裁剪的质量并查看结果,然后使用我们的EPS 查看器 Web 应用程序查看生成的 EPS 文件。

在 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);
Example-CropEPS.cs hosted with ❤ by GitHub

请参阅 JavaC++ 中的 EPS 裁剪方法。

初始 EPS 图像
初始图像
裁剪后的 EPS 图像
裁剪后的图像

构建 EPS 裁剪 AI 代理

如果您希望基于 Aspose.Page 构建自己的 AI 代理,实现自动化图像处理和 EPS 矢量裁剪,其实现流程可能如下所示:

AI 代理不会尝试栅格化和视觉切片文件,而是原生计算坐标边界框,从而提供优化的工作流程。

  1. 几何意图提取(LLM 分析层)

用户输入 EPS 文件以及自然语言布局约束(例如,“裁剪掉底部 50 像素的白色边距”或“隔离中心 200x200 像素的图形区域”)。

LLM 将提示转换为结构坐标修改(例如,识别相对于左侧、顶部、右侧或底部边界框的调整)。

  1. 原生边界框导入

为了防止 LLM 错误地生成超出图形实际尺寸的裁剪坐标(这将引发编译器异常),代理会查询原始文档属性。系统通过 PsDocument 加载目标资源,并调用 document.ExtractEpsBoundingBox()

此数组 ([x0, y0, x1, y1]) 作为 AI 的保护性边界约束:

约束循环:initialBoundingBox[0] ≤ newBoundingBox[0] ≤ initialBoundingBox[2]

  1. 坐标重新计算和校准(映射层)

代理将提取的边界数组和用户的结构提示传递给其内部计算矩阵。然后,它计算目标坐标参数 float[] newBoundingBox。如果用户要求中心聚焦对齐,AI 将计算相对于原始参数的几何中心,并均匀偏移边界值。

  1. 元数据修补和资源序列化(执行节点)

校准后的数组直接写入文档结构,无需初始化完整的、资源密集型的画布重新渲染。

系统执行原生 document.CropEps (outputPath, newBoundingBox) 命令。通过仅更新 PostScript 页面描述,系统可立即向终端界面提供完美裁剪的文件。

在我们的EPS 裁剪网页应用程序上在线评估 EPS 裁剪效果。您可以在几秒钟内裁剪 EPS 文件并下载结果。

您可以从 GitHub下载示例和数据文件。