Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using ImageSharp what's the best way to convert incoming buffer containing Bgra32 to an ImageSharp Image<Rgba24> image?

Tags:

c#

imagesharp

I get PixelFormats.Bgra32 images from UAP and WPF and I would like to know the fastest way to convert them to and from SixLabors.ImageSharp Image<Rgba32> images. Is there some magic "mutate" that can flip the pixel bytes after I've copied the buffer using TryGetSinglePixelSpan?

like image 977
Chris Avatar asked Nov 11 '20 06:11

Chris


1 Answers

There's no shortcut for mutating an existing image but you can create a new one with the pixel format you need from the first.

Image<Rgba32> rgba;

// Load decodes
// LoadPixelData copies
// WrapMemory wraps
using (Image<Bgra32> bgra = Image.LoadPixelData<Bgra32>(...))
{
   rgba = bgra.CloneAs<Rgba32>(bgra.GetConfiguration());
}

You can then do whatever you need with the Rgba32 image.

like image 178
James South Avatar answered Sep 22 '22 13:09

James South