NodePipeline/NodePipeline.Application/ImageSaver.cs
2026-01-02 20:55:25 +03:00

30 lines
864 B
C#

using SkiaSharp;
namespace NodePipeline.Application;
public static class ImageSaver
{
public static void Save(in ImageBuffer buffer, string path)
{
using var bitmap = new SKBitmap(buffer.Width, buffer.Height,
SKColorType.Rgba8888, SKAlphaType.Premul);
var span = buffer.GetPixelSpan();
var idx = 0;
for (var y = 0; y < buffer.Height; y++)
for (var x = 0; x < buffer.Width; x++)
{
var r = span[idx++];
var g = span[idx++];
var b = span[idx++];
var a = span[idx++];
bitmap.SetPixel(x, y, new SKColor(r, g, b, a));
}
using var image = SKImage.FromBitmap(bitmap);
using var data = image.Encode(SKEncodedImageFormat.Png, 100);
using var stream = File.OpenWrite(path);
data.SaveTo(stream);
}
}