Browse Source

Use bulk overload to convert the pixel row from Vector4 to Rgb in ApplyRgbaCompatibleIccProfile

pull/3028/head
Socolin 9 months ago
parent
commit
472089abfb
  1. 7
      src/ImageSharp/Formats/Png/PngDecoderCore.cs

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

@ -2178,13 +2178,8 @@ internal sealed class PngDecoderCore : ImageDecoderCore
{ {
using IMemoryOwner<Rgb> rgbBuffer = image.Configuration.MemoryAllocator.Allocate<Rgb>(pixelsRow.Length); using IMemoryOwner<Rgb> rgbBuffer = image.Configuration.MemoryAllocator.Allocate<Rgb>(pixelsRow.Length);
Span<Rgb> rgbPacked = rgbBuffer.Memory.Span; Span<Rgb> rgbPacked = rgbBuffer.Memory.Span;
ref Rgb rgbPackedRef = ref MemoryMarshal.GetReference(rgbPacked);
for (int x = 0; x < pixelsRow.Length; x++)
{
Unsafe.Add(ref rgbPackedRef, x) = Rgb.FromScaledVector4(pixelsRow[x]);
}
Rgb.FromScaledVector4(pixelsRow, rgbPacked);
converter.Convert<Rgb, Rgb>(rgbPacked, rgbPacked); converter.Convert<Rgb, Rgb>(rgbPacked, rgbPacked);
Span<float> pixelsRowAsFloats = MemoryMarshal.Cast<Vector4, float>(pixelsRow); Span<float> pixelsRowAsFloats = MemoryMarshal.Cast<Vector4, float>(pixelsRow);

Loading…
Cancel
Save