diff --git a/src/ImageSharp/Formats/Png/PngDecoderCore.cs b/src/ImageSharp/Formats/Png/PngDecoderCore.cs index 9f0c59780..004b4f304 100644 --- a/src/ImageSharp/Formats/Png/PngDecoderCore.cs +++ b/src/ImageSharp/Formats/Png/PngDecoderCore.cs @@ -252,9 +252,13 @@ namespace SixLabors.ImageSharp.Formats.Png this.ReadTextChunk(metadata, chunk.Data.Array, chunk.Length); break; case PngChunkType.Exif: - byte[] exifData = new byte[chunk.Length]; - Buffer.BlockCopy(chunk.Data.Array, 0, exifData, 0, chunk.Length); - metadata.ExifProfile = new ExifProfile(exifData); + if (!this.ignoreMetadata) + { + byte[] exifData = new byte[chunk.Length]; + Buffer.BlockCopy(chunk.Data.Array, 0, exifData, 0, chunk.Length); + metadata.ExifProfile = new ExifProfile(exifData); + } + break; case PngChunkType.End: this.isEndChunkReached = true; diff --git a/src/ImageSharp/Formats/Png/PngEncoderCore.cs b/src/ImageSharp/Formats/Png/PngEncoderCore.cs index 8bd3d3eb6..f9ca8ebc6 100644 --- a/src/ImageSharp/Formats/Png/PngEncoderCore.cs +++ b/src/ImageSharp/Formats/Png/PngEncoderCore.cs @@ -533,7 +533,7 @@ namespace SixLabors.ImageSharp.Formats.Png private void WriteExifChunk(Stream stream, Image image) where TPixel : struct, IPixel { - if (image.MetaData.ExifProfile.Values.Count > 0) + if (image.MetaData.ExifProfile?.Values.Count > 0) { this.WriteChunk(stream, PngChunkType.Exif, image.MetaData.ExifProfile.RawData); }