読者です 読者をやめる 読者になる 読者になる

なんとなく

なんとなく書きます

System.Windows.Controls.Imageの保存方法

元の画像に線や文字などの描画を追加して元の画像サイズで保存する方法。
もっと効率のいい方法があるかもしれないがわからん。

SaveImage関数は下記で書いたやつ。
引数のみを変更したやつ
WriteableBitmapからRenderTargetBitmapに
http://d.hatena.ne.jp/stardust444/20130223/1361613956

/// <summary>
/// 加工されたImageコントロールを元の画像サイズで保存
/// </summary>
/// <param name="fileName">保存するファイル名</param>
/// <param name="image">画像と追加描画されたImageコントロール</param>
/// <param name="rawImageSize">元の画像サイズ</param>
public void Save(string fileName , Image image,Size rawImageSize)
{
   //画像の素を作る。
   var img = new RenderTargetBitmap(Convert.ToInt32(rawImageSize.Width) , Convert.ToInt32(rawImageSize.Height) , 96 , 96 , PixelFormats.Pbgra32);
   //img.Render用にVisualを作成
   var drawingVisual = new DrawingVisual();
   //操作用にDrawContextの作成 
   var drawContext = drawingVisual.RenderOpen();
   //描画データを画像に入れる
   drawContext.DrawImage(image.Source , new Rect(0 , 0 , Convert.ToInt32(rawImageSize.Width), Convert.ToInt32(rawImageSize.Height)));
   //DrawContextに描画データの書き込み
   drawContext.Close();
   //RenderTargetBitmapに書き込み。
   img.Render(drawingVisual);
   //画像の保存
   //この関数は前に書いた関数の引数をWriteableBitmapをRenderTargetBitmapに変えたやつ
   SaveImage(img , fileName);
}