Browse Source

Add test for #2259

pull/2267/head
James Jackson-South 4 years ago
parent
commit
f941581de1
  1. 1
      src/ImageSharp/Image.FromStream.cs
  2. 27
      tests/ImageSharp.Tests/Formats/GeneralFormatTests.cs
  3. 3
      tests/ImageSharp.Tests/TestImages.cs
  4. 3
      tests/Images/Input/Png/issues/Issue_2259.png

1
src/ImageSharp/Image.FromStream.cs

@ -517,6 +517,7 @@ public abstract partial class Image
/// <param name="stream">The input stream.</param>
/// <param name="action">The action to perform.</param>
/// <returns>The <typeparamref name="T"/>.</returns>
/// <exception cref="NotSupportedException">Cannot read from the stream.</exception>
internal static T WithSeekableStream<T>(
DecoderOptions options,
Stream stream,

27
tests/ImageSharp.Tests/Formats/GeneralFormatTests.cs

@ -46,6 +46,21 @@ public class GeneralFormatTests
image.DebugSave(provider);
}
[Fact]
public void ReadOriginIsRespectedOnLoad()
{
using FileStream stream = File.OpenRead(TestFile.GetInputFileFullPath(TestImages.Png.Issue2259));
using Image<Rgb24> i = Image.Load<Rgb24>(stream);
long position1 = stream.Position;
Assert.NotEqual(0, position1);
using Image<Rgb24> j = Image.Load<Rgb24>(stream);
long position2 = stream.Position;
Assert.True(position2 > position1);
Assert.NotEqual(i[5, 5], j[5, 5]);
}
[Fact]
public void ImageCanEncodeToString()
{
@ -155,15 +170,15 @@ public class GeneralFormatTests
foreach (TestFile file in Files)
{
byte[] serialized;
using (var image = Image.Load(file.Bytes, out IImageFormat mimeType))
using (var memoryStream = new MemoryStream())
using (Image image = Image.Load(file.Bytes, out IImageFormat mimeType))
using (MemoryStream memoryStream = new())
{
image.Save(memoryStream, mimeType);
memoryStream.Flush();
serialized = memoryStream.ToArray();
}
using var image2 = Image.Load<Rgba32>(serialized);
using Image<Rgba32> image2 = Image.Load<Rgba32>(serialized);
image2.Save($"{path}{Path.DirectorySeparatorChar}{file.FileName}");
}
}
@ -198,8 +213,8 @@ public class GeneralFormatTests
public void CanIdentifyImageLoadedFromBytes(int width, int height, string extension)
{
using var image = Image.LoadPixelData<Rgba32>(new Rgba32[width * height], width, height);
using var memoryStream = new MemoryStream();
using Image<Rgba32> image = Image.LoadPixelData<Rgba32>(new Rgba32[width * height], width, height);
using MemoryStream memoryStream = new();
IImageFormat format = GetFormat(extension);
image.Save(memoryStream, format);
memoryStream.Position = 0;
@ -220,7 +235,7 @@ public class GeneralFormatTests
{
byte[] invalid = new byte[10];
using var memoryStream = new MemoryStream(invalid);
using MemoryStream memoryStream = new(invalid);
IImageInfo imageInfo = Image.Identify(memoryStream, out IImageFormat format);
Assert.Null(imageInfo);

3
tests/ImageSharp.Tests/TestImages.cs

@ -130,6 +130,9 @@ public static class TestImages
// Issue 2209: https://github.com/SixLabors/ImageSharp/issues/2209
public const string Issue2209IndexedWithTransparency = "Png/issues/Issue_2209.png";
// Issue 2259: https://github.com/SixLabors/ImageSharp/issues/2259
public const string Issue2259 = "Png/issues/Issue_2259.png";
public static class Bad
{
public const string MissingDataChunk = "Png/xdtn0g01.png";

3
tests/Images/Input/Png/issues/Issue_2259.png

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:45b635fe3104e96b7c6d8fa9d28f7fb86fb184c7a407c44a2f90f3f88c140ef0
size 6037
Loading…
Cancel
Save