public override bool Save(System.IO.Stream stream, PureImage image) { WindowsPresentationImage ret = (WindowsPresentationImage)image; if (ret.Img != null) { try { PngBitmapEncoder e = new PngBitmapEncoder(); e.Frames.Add(BitmapFrame.Create(ret.Img as BitmapSource)); e.Save(stream); } catch { return(false); } } else { return(false); } return(true); }
public override PureImage FromStream(System.IO.Stream stream) { WindowsPresentationImage ret = null; if (stream != null) { try { PngBitmapDecoder bitmapDecoder = new PngBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad); ImageSource m = bitmapDecoder.Frames[0]; if (m != null) { ret = new WindowsPresentationImage(); ret.Img = m; if (ret.Img.CanFreeze) { ret.Img.Freeze(); } } m = null; bitmapDecoder = null; } catch { try { stream.Seek(0, System.IO.SeekOrigin.Begin); JpegBitmapDecoder bitmapDecoder = new JpegBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad); ImageSource m = bitmapDecoder.Frames[0]; if (m != null) { ret = new WindowsPresentationImage(); ret.Img = m; if (ret.Img.CanFreeze) { ret.Img.Freeze(); } } m = null; bitmapDecoder = null; } catch { ret = null; } } finally { try { stream.Seek(0, System.IO.SeekOrigin.Begin); if (ret == null) { stream.Dispose(); } } catch { } } } return(ret); }