EPS の切り抜き | C# .NET API ソリューション
概要
この記事では、C# を使って EPS をトリミングする 方法について説明します。以下のトピックを取り上げます。
C# EPS トリミングの説明
画像のトリミングとは、画像の左、右、上、下の余白のいずれか、または複数の余白を変更する操作です。つまり、画像のコンテンツを端から切り取ることになります。そのため、結果として得られる EPS 画像のサイズは常に元のサイズよりも小さくなります。このソリューションは EPS ファイルのコンテンツではなくヘッダーに基づいて処理するため、ファイルサイズは変更されません。
EPS 画像の余白は、BoundingBox メタデータによって定義されます。トリミング、つまり新しいバウンディングボックスを設定するには、EPS 画像の既存のバウンディングボックスを把握する必要があります。そうしないと、新しい境界ボックスの値が既存の境界ボックスの外側に割り当てられ、エラーが発生する可能性があります。 したがって、C# で EPS 画像をトリミングする手順は次のとおりです。
- EPSファイルを含む入力ストリームを使用して、 PsDocumentオブジェクトを初期化します。
- 静的メソッド ExtractEpsBoundingBoxを使用して、画像の既存の境界ボックスを抽出します。
- 結果のEPSファイル用の出力ストリームを作成します。
- 新しい境界ボックスを作成します。
- 静的メソッド CropEpsを使用して、新しい境界ボックスでPsDocumentオブジェクトをトリミングします。
Aspose.Page EPS Crop の品質を確認し、無料のオンラインツール Crop EPS で結果を表示できます。その後、生成された EPS ファイルを弊社の Web アプリケーション EPS Viewer で表示できます。
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の保護境界制約として機能します。
Constraint Loop: initialBoundingBox[0] ≤ newBoundingBox[0] ≤ initialBoundingBox[2]
座標の再計算とキャリブレーション(マッピングレイヤー) エージェントは、抽出された境界配列とユーザーの構造プロンプトを内部計算マトリックスに渡します。そして、ターゲット座標パラメータ
float[] newBoundingBoxを計算します。ユーザーが中心フォーカス位置合わせを要求した場合、AIは元のパラメータに対する幾何学的中心を計算し、境界値を均一にオフセットします。メタデータパッチ適用とアセットシリアル化(実行ノード) 調整済みの配列は、リソースを大量に消費するキャンバスの再レンダリングを初期化することなく、ドキュメント構造に直接書き込まれます。
システムはネイティブコマンド document.CropEps (outputPath, newBoundingBox) を実行します。PostScriptページ記述のみを更新することで、システムは完全にクリップされたファイルをエンドポイントインターフェースに即座に配信します。
EPS 切り抜き Web アプリケーション で、オンラインで EPS の切り抜きをお試しください。数秒で EPS ファイルの切り抜きと結果のダウンロードが可能です。
サンプルファイルとデータファイルは GitHub からダウンロードできます。