diff --git a/src/ImageSharp/Formats/Png/PngEncoderCore.cs b/src/ImageSharp/Formats/Png/PngEncoderCore.cs
index a1fd559a36..912e6532e2 100644
--- a/src/ImageSharp/Formats/Png/PngEncoderCore.cs
+++ b/src/ImageSharp/Formats/Png/PngEncoderCore.cs
@@ -36,9 +36,9 @@ namespace ImageSharp.Formats
///
- /// Contains the raw pixel data from the image.
+ /// Contains the raw pixel data from an indexed image.
///
- private byte[] pixelData;
+ private byte[] palettePixelData;
///
/// The image width.
@@ -118,20 +118,16 @@ namespace ImageSharp.Formats
this.height = image.Height;
// Write the png header.
- stream.Write(
- new byte[]
- {
- 0x89, // Set the high bit.
- 0x50, // P
- 0x4E, // N
- 0x47, // G
- 0x0D, // Line ending CRLF
- 0x0A, // Line ending CRLF
- 0x1A, // EOF
- 0x0A // LF
- },
- 0,
- 8);
+ this.chunkDataBuffer[0] = 0x89; // Set the high bit.
+ this.chunkDataBuffer[1] = 0x50; // P
+ this.chunkDataBuffer[2] = 0x4E; // N
+ this.chunkDataBuffer[3] = 0x47; // G
+ this.chunkDataBuffer[4] = 0x0D; // Line ending CRLF
+ this.chunkDataBuffer[5] = 0x0A; // Line ending CRLF
+ this.chunkDataBuffer[6] = 0x1A; // EOF
+ this.chunkDataBuffer[7] = 0x0A; // LF
+
+ stream.Write(this.chunkDataBuffer, 0, 8);
// Ensure that quality can be set but has a fallback.
int quality = this.Quality > 0 ? this.Quality : image.Quality;
@@ -179,14 +175,6 @@ namespace ImageSharp.Formats
{
this.CollectIndexedBytes(image, stream, header);
}
- else if (this.PngColorType == PngColorType.Grayscale || this.PngColorType == PngColorType.GrayscaleWithAlpha)
- {
- //this.CollectGrayscaleBytes(image);
- }
- else
- {
- // this.CollectColorBytes(image);
- }
this.WritePhysicalChunk(stream, image);
this.WriteGammaChunk(stream);
@@ -247,9 +235,10 @@ namespace ImageSharp.Formats
where TColor : struct, IPackedPixel
where TPacked : struct
{
- // Quatize the image and get the pixels
+ // Quatize the image and get the pixels.
+ // TODO: It might be an idea to add a pixel accessor to QuantizedImage to allow us to work by row.
QuantizedImage quantized = this.WritePaletteChunk(stream, header, image);
- this.pixelData = quantized.Pixels;
+ this.palettePixelData = quantized.Pixels;
}
///
@@ -332,7 +321,7 @@ namespace ImageSharp.Formats
switch (this.PngColorType)
{
case PngColorType.Palette:
- Buffer.BlockCopy(this.pixelData, row * bytesPerScanline, rawScanline, 0, bytesPerScanline);
+ Buffer.BlockCopy(this.palettePixelData, row * bytesPerScanline, rawScanline, 0, bytesPerScanline);
break;
case PngColorType.Grayscale:
case PngColorType.GrayscaleWithAlpha: