Browse Source

Make sure pixel values are float between 0 and 1 during processing of ApplyRgbaCompatibleIccProfile

pull/3028/head
Socolin 5 months ago
parent
commit
e6d62d019a
  1. 6
      src/ImageSharp/Formats/Png/PngDecoderCore.cs

6
src/ImageSharp/Formats/Png/PngDecoderCore.cs

@ -2174,7 +2174,8 @@ internal sealed class PngDecoderCore : ImageDecoderCore
ColorProfileConverter converter = new(options);
image.Mutate(o => o.ProcessPixelRowsAsVector4((pixelsRow, _) =>
image.Mutate(o => o.ProcessPixelRowsAsVector4(
(pixelsRow, _) =>
{
using IMemoryOwner<Rgb> rgbBuffer = image.Configuration.MemoryAllocator.Allocate<Rgb>(pixelsRow.Length);
Span<Rgb> rgbPacked = rgbBuffer.Memory.Span;
@ -2190,6 +2191,7 @@ internal sealed class PngDecoderCore : ImageDecoderCore
{
Unsafe.As<float, Rgb>(ref Unsafe.Add(ref pixelsRowAsFloatsRef, cIdx)) = rgbPacked[x];
}
}));
},
PixelConversionModifiers.Scale));
}
}

Loading…
Cancel
Save