使用 ImageSharp 将包含 Bgra32 的传入缓冲区转换为 ImageSharp Image<Rgba24> 图像的最佳方法是什么?

Chr*_*ris 9 c# imagesharp

PixelFormats.Bgra32从 UAP 和 WPF获取图像,我想知道将它们转换为 SixLabors.ImageSharpImage<Rgba32>图像的最快方法。在我使用 复制缓冲区后,是否有一些神奇的“变异”可以翻转像素字节TryGetSinglePixelSpan

Jam*_*uth 6

改变现有图像没有捷径,但您可以从第一个开始使用您需要的像素格式创建一个新图像。

Image<Rgba32> rgba;

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

然后,您可以对Rgba32图像执行任何您需要的操作。