public Image <TPixel> Decode <TPixel>(Configuration configuration, Stream stream)
            where TPixel : unmanaged, IPixel <TPixel>
        {
            using (var sourceBitmap = new System.Drawing.Bitmap(stream))
            {
                if (sourceBitmap.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb)
                {
                    return(SystemDrawingBridge.From32bppArgbSystemDrawingBitmap <TPixel>(sourceBitmap));
                }

                using (var convertedBitmap = new System.Drawing.Bitmap(
                           sourceBitmap.Width,
                           sourceBitmap.Height,
                           System.Drawing.Imaging.PixelFormat.Format32bppArgb))
                {
                    using (var g = System.Drawing.Graphics.FromImage(convertedBitmap))
                    {
                        g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                        g.InterpolationMode  = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                        g.SmoothingMode      = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                        g.PixelOffsetMode    = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

                        g.DrawImage(sourceBitmap, 0, 0, sourceBitmap.Width, sourceBitmap.Height);
                    }

                    return(SystemDrawingBridge.From32bppArgbSystemDrawingBitmap <TPixel>(convertedBitmap));
                }
            }
        }
 public void Encode <TPixel>(Image <TPixel> image, Stream stream)
     where TPixel : unmanaged, IPixel <TPixel>
 {
     using (System.Drawing.Bitmap sdBitmap = SystemDrawingBridge.To32bppArgbSystemDrawingBitmap(image))
     {
         sdBitmap.Save(stream, this.imageFormat);
     }
 }