SharpDxを利用して、読み込んだ画像を画面表示し、画像データにして保存

SharpDxを利用して、読み込んだ画像を画面表示し、再度画像データにして保存します。

ネットで検索しましたが、SharpDX.Direct2D1.BitmapRenderTargetで保持したデータを画像ファイルに保存するサンプルがなく非常に苦労しました。

サンプルでは、SharpDX.Direct2D1.BitmapRenderTargetからSharpDX.Direct2D1.WicRenderTargetに変換してから画像ファイルに保存します。

1.使用した画像

以下は、読み込んだ画像です。

以下は、書き込んだ画像で、背景を水色に変更し、サイズを半分にしています。

2.参考ソース

以下参考ソースです。

初期処理

初期処理では、画像に表示するためのWinRenderTargetを作成します。
注意点は、WinRenderTargetを作成するための引数であるRenderTargetPropertiesに、RenderTargetType.Softwareを指定する点です。
※Software以外はエラーになります。
また、画像保存処理でも、同じRenderTargetPropertiesを利用します。

画像読み込み

画像を読み込んで、SharpDX.Direct2D1.Bitmap型に変換します。

画像の表示

読み込んだ、SharpDX.Direct2D1.Bitmap型のデータを、一旦バッファ(BmpRenderTarget)に格納し、バッファのデータを画像に表示するためのWinRenderTargetにドローし、画面に表示します。

画像ファイルへの保存

初期処理で作成したRenderTargetPropertiesを利用し、画像保存用のWicRenderTargetを作成します。
その後、WicRenderTargetに対し、読み込んだ、SharpDX.Direct2D1.Bitmap型のデータを、縮小ドローし、SharpDX.WIC.Bitmap型に格納します。
その後、SharpDX.WIC.Bitmap型->byte[]->System.Drawing.Bitmap型に変換し、
画像ファイルに保存します。

サンプルクラスの実装

上記のメソッドを順に呼びます。

Print Friendly, PDF & Email

シェアする

  • このエントリーをはてなブックマークに追加

フォローする