From 7b316333db972ea0d1268540e108d14adbaf3cd7 Mon Sep 17 00:00:00 2001 From: dirk Date: Sun, 30 Oct 2016 11:40:00 +0100 Subject: [PATCH] Used the new pixel code to optimize the BMP encoder. --- src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs | 30 ++++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs b/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs index c34da8ab75..1c1c71b332 100644 --- a/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs +++ b/src/ImageSharp/Formats/Bmp/BmpEncoderCore.cs @@ -155,19 +155,12 @@ namespace ImageSharp.Formats where TColor : struct, IPackedPixel where TPacked : struct { - for (int y = pixels.Height - 1; y >= 0; y--) + using (PixelRow row = new PixelRow(pixels.Width, ComponentOrder.BGRA, this.padding)) { - for (int x = 0; x < pixels.Width; x++) + for (int y = pixels.Height - 1; y >= 0; y--) { - // Convert back to b-> g-> r-> a order. - Color color = new Color(pixels[x, y].ToVector4()); - writer.Write(new[] { color.B, color.G, color.R, color.A }); - } - - // Pad - for (int i = 0; i < this.padding; i++) - { - writer.Write((byte)0); + pixels.CopyTo(row, y); + writer.Write(row.Data); } } } @@ -183,19 +176,12 @@ namespace ImageSharp.Formats where TColor : struct, IPackedPixel where TPacked : struct { - for (int y = pixels.Height - 1; y >= 0; y--) + using (PixelRow row = new PixelRow(pixels.Width, ComponentOrder.BGR, this.padding)) { - for (int x = 0; x < pixels.Width; x++) - { - // Convert back to b-> g-> r order. - Color color = new Color(pixels[x, y].ToVector4()); - writer.Write(new[] { color.B, color.G, color.R }); - } - - // Pad - for (int i = 0; i < this.padding; i++) + for (int y = pixels.Height - 1; y >= 0; y--) { - writer.Write((byte)0); + pixels.CopyTo(row, y); + writer.Write(row.Data); } } }