PostScript での画像操作 | .NET
PS ドキュメントに画像を追加
Aspose.Page for .NET ライブラリは、PS ドキュメントに画像を追加するための 2 つの方法を提供します。
- 不透明画像用
- 透明画像用
PostScript は透明度をサポートしていないため、半透明画像は完全に透明なピクセルと完全に不透明なピクセルのセットとしてレンダリングできます。このような画像は マスク と呼ばれます。PS ドキュメント内の半透明画像を マスク として表示し、画像の透明度をより正確に反映させるには、画像に対して何らかのチェックと前処理を実行する必要があります。
これらのチェックと前処理には時間がかかります。したがって、画像が完全に不透明であることが確実な場合は、実行時間を節約できる最初の方法を使用することをお勧めします。
2つ目の方法は、画像が完全に不透明か、完全に透明か、あるいは半透明かを認識します。完全に不透明な場合は、最初の方法で不透明画像として追加されます。完全に透明な場合はドキュメントに追加されず、半透明画像の場合はPostScript画像マスクとして追加されます。
以下の例では、完全に不透明な画像を追加する方法を示します。透明画像の追加方法については、「透明度の操作」の記事で説明します。
この例では、Aspose.Page for .NETライブラリを使用して新しい PsDocumentに画像を追加するために、以下の手順を実行します。
- 結果のPSファイル用の出力ストリームを作成します。
- デフォルトオプションで PsSaveOptions オブジェクトを作成します。
- 作成済みの出力ストリームと保存オプションを使用して、1 ページの PsDocument を作成します。
- 新しいグラフィックス状態を作成します。
- 画像ファイルから System.Drawing.Bitmap を作成します。
- 画像に必要な変換を作成します。
- 画像を PsDocument オブジェクトに追加します。
- 現在のグラフィックス状態から上位レベルのグラフィックス状態に移行します。
- ページを閉じます。
- ドキュメントを保存します。
1//Create an output stream for PostScript document
2using (Stream outPsStream = new FileStream(dataDir + "AddImage_outPS.ps", FileMode.Create))
3{
4 //Create save options with A4 size
5 PsSaveOptions options = new PsSaveOptions();
6
7 // Create new 1-paged PS Document
8 PsDocument document = new PsDocument(outPsStream, options, false);
9
10
11 document.WriteGraphicsSave();
12 document.Translate(100, 100);
13
14 //Create a Bitmap object from image file
15 using (Bitmap image = new Bitmap(dataDir + "TestImage Format24bppRgb.jpg"))
16 {
17 //Create image transform
18 Matrix transform = new Matrix();
19 transform.Translate(35, 300);
20 transform.Scale(3, 3);
21 transform.Rotate(-45);
22
23 //Add the image to document
24 document.DrawImage(image, transform, Color.Empty);
25 }
26
27 document.WriteGraphicsRestore();
28
29 //Close current page
30 document.ClosePage();
31
32 //Save the document
33 document.Save();
34}
Linux、macOS、その他のWindows以外のオペレーティングシステムでは、 Aspose.Page.Drawing NuGetパッケージをご利用いただけます。このパッケージは、System.Drawingシステムライブラリではなく、Aspose.Drawingバックエンドを使用します。
そのため、System.Drawing名前空間ではなく、Aspose.Page.Drawing名前空間をインポートしてください。上記のコードスニペットでは、System.Drawing.Bitmapの代わりにAspose.Page.Drawing.Bitmapが使用され、System.Drawing.Drawing2D.Matrixの代わりにAspose.Page.Drawing.Drawing2D.Matrixが使用されます。GitHubのコード例には、必要な置換がすべて含まれています。
Java の PS ドキュメント内の画像の操作を参照してください。
このコードを実行した結果は次のように表示されます。
サンプルとデータ ファイルは GitHub からダウンロードできます。