public static Image <Rgba32> ToImage(this BsbChart chart, IReadOnlyDictionary <byte, BsbColor> palette, BsbSize size) { if (chart == null) { throw new ArgumentNullException(nameof(chart)); } var image = new Image <Rgba32>((int)size.Width, (int)size.Height); try { Func <BsbColor, Rgba32> converter = color => new Rgba32(color.R, color.G, color.B, 0xFF); image.ProcessPixelRows( accessor => { for (int y = 0; y < accessor.Height; y++) { var rowSpan = accessor.GetRowSpan(y); BsbChartWriter.WriteRasterRow(chart.RasterSegment, palette, y, rowSpan, converter); } }); return(image); } catch { image.Dispose(); throw; } }
public static Image <Rgba32> ToImage(this BsbChart chart) { if (chart == null) { throw new ArgumentNullException(nameof(chart)); } var metadata = BsbMetadataReader.ReadMetadata(chart.TextSegment); return(ToImage(chart, metadata.Palette, metadata.Size)); }