SixLabors/ImageSharp

ImageSharp sometimes add gray rectangle at the bottom right

laitauchocolat opened this issue · 26 comments

Prerequisites

  • I have written a descriptive issue title
  • I have verified that I am running the latest version of ImageSharp
  • I have verified if the problem exist in both DEBUG and RELEASE mode
  • I have searched open and closed issues to ensure it has not already been reported

ImageSharp version

3.1.0

Other ImageSharp packages and versions

3.0.1

Environment (Operating system, version and so on)

Windows 11

.NET Framework version

.NET 6

Description

On some picture, ImageSharp will add a gray rectangle at the bottom right,
Original: 826862_3
Final: square

Steps to Reproduce

Download sample projet c#
Replace fb.jpg with the original picture:
826862_3
try it with version 3.0.1, (no gray square)
erease debug + obj and install the latest version 3.1.2 and execute, (gray square)

Images

No response

@br3aker would it be possible for you to have a look at this? I thought we’d fixed it previously.

I got the same thing net8.0
mango
mangoSaved

I save it like this:

using var fstream = file.OpenReadStream(); // file is IFormFile (asp.net core)

var img = Image.Load(fstream);
await img.SaveAsync(filePath, new JpegEncoder { Quality = 50 });

cropping the bottom part helps avoid the problem

Does the issue happen on decode or encode?

I got the same thing net8.0

What do you mean by this? Same version different target framework?

@JimBobSquarePants
version 3.1.2
net8.0
the image with the gray square is the result of img.SaveAsync(filePath, new JpegEncoder { Quality = 50 });
I assume this is encode.

OK. Can you please encode the image as Png and let me know whether the result is the same?

using await img.SaveAsPngAsync(Path.ChangeExtension(filePath, "png")); I also get the gray square,
I'm also doing a clone and resize to 300x300 and that one also has the square.

2

Decoder then. Will need to figure out the commit that broke it.

Hm, that's strange. I'll take a look this weekend.

Thanks @br3aker it was likely something around this. #2516 (files)

That's actually it but fix is rather complex if we don't want to break existing logic with that fast 'DOS images'. Working on it atm.

@br3aker I kid you not I was JUST this second writing a comment to see if you wanted me to have a look. 🤪

Thanks for helping out. Much appreciated!

This also happens in Version 2.1.6. It's not an Version 3-Issue

This also happens in Version 2.1.6. It's not an Version 3-Issue

I upgraded from 2.1.3 to 2.1.7 due to CVE-2024-27929 and am seeing the gray rectangle on certain images also.

The same code is in both v2 and v3. Trust @br3aker in his analysis, he knows more about that decoder than anyone on the planet.

Sounds good. Hope he will find a solution, soon :)

Is there any update on this issue? It's negatively impacting us, and the workaround of cropping feels kinda hacky :-)

I'll prioritize it. Stay tuned.

I've got PRs open for the v3 and v4 branches. It's nearly 1am here now though so I'll see how reviews go in the morning.

Thanks for the amazingly fast turnaround @JimBobSquarePants - appreciate it! Looking forward to a new version appearing on nuget soon.

Hey @JimBobSquarePants - any chance of a new release on nuget 🙏 ? It beats building from source ourselves

Working on it! Just gotta get one critical task done first.

@JimBobSquarePants - Is there any chance of this being backported to v2? (we're still dependent on .NET Standard) I just tried upgrading to 2.8 from 2.3 (to address the two CVE's) and the gray rectangle appears with our test images. Thank you kindly if you're able to make this happen.

If you open a PR against our 2.1.x release branch I can get one merged. We’re only backporting security releases in-house at the moment to stay on top of maintenance.

If you open a PR against our 2.1.x release branch I can get one merged. We’re only backporting security releases in-house at the moment to stay on top of maintenance.

I appreciate the quick reply and certainly understand you have to prioritize your time. If I knew how to do this I absolutely would do so, I'm just not sure how to even go about attempting something like this unfortunately. Regardless, thank you for everything you do for the community here.

Hi, I got the same issue in my project .net6.0 and the ImageSharp version is 3.1.4.
I couldn't figure out if this issue fixed in 3.1.4 or for next release, anyone help?

Hi, I got the same issue in my project .net6.0 and the ImageSharp version is 3.1.4. I couldn't figure out if this issue fixed in 3.1.4 or for next release, anyone help?

The fix has been released. If you are still seeing an issue, please raise a separate ticket with the image in question.