【WPF】 PNG ⇔ BitmapSourceの変換
ここ(方法: PNG イメージをエンコードおよびデコードする)で調べました。
PNG ⇒ BitmapSource
using System.IO; using System.Windows.Media.Imaging; public BitmapSource ReadPng(string pngPath) { var stream = new FileStream(pngPath, FileMode.Open, FileAccess.Read, FileShare.Read); var decoder = new PngBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); return decoder.Frames[0]; // 誤ってstreamをDisposeするとBitmapSourceも捨てられます }
BitmapSource ⇒ PNG
using System.IO; using System.Windows.Media.Imaging; public void SaveAsPng(string pngPath, BitmapSource bitmapSource) { using (var stream = new FileStream(pngPath, FileMode.Create)) { var encoder = new PngBitmapEncoder(); encoder.Interlace = PngInterlaceOption.On; encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); encoder.Save(stream); } }