diff --git a/examples/Console/Canvas/Canvas.csproj b/examples/Console/Canvas/Canvas.csproj
index 1a07982..39df2fb 100644
--- a/examples/Console/Canvas/Canvas.csproj
+++ b/examples/Console/Canvas/Canvas.csproj
@@ -14,9 +14,9 @@
-
+
PreserveNewest
-
+
diff --git a/examples/Console/Canvas/Program.cs b/examples/Console/Canvas/Program.cs
index 337961d..29827eb 100644
--- a/examples/Console/Canvas/Program.cs
+++ b/examples/Console/Canvas/Program.cs
@@ -1,3 +1,5 @@
+using System.Diagnostics;
+using System.Reflection;
using SixLabors.ImageSharp.Processing;
using Spectre.Console;
using Spectre.Console.Rendering;
@@ -23,6 +25,16 @@ namespace CanvasExample
image.NoMaxWidth();
image.Mutate(ctx => ctx.Grayscale().Rotate(-45).EntropyCrop());
Render(image, "Image from file (fit, greyscale, rotated)");
+
+ // Draw image again, but load from embedded resource rather than file
+ using (var fileStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Canvas.cake.png"))
+ {
+ Debug.Assert(fileStream != null);
+ var embeddedImage = new CanvasImage(fileStream);
+ embeddedImage.BilinearResampler();
+ embeddedImage.MaxWidth(16);
+ Render(embeddedImage, "Image from embedded resource (16 wide)");
+ }
}
private static void Render(IRenderable canvas, string title)
diff --git a/src/Spectre.Console.ImageSharp/CanvasImage.cs b/src/Spectre.Console.ImageSharp/CanvasImage.cs
index fdf4bea..feb4bc0 100644
--- a/src/Spectre.Console.ImageSharp/CanvasImage.cs
+++ b/src/Spectre.Console.ImageSharp/CanvasImage.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.IO;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Processors.Transforms;
@@ -51,6 +52,24 @@ namespace Spectre.Console
Image = SixLabors.ImageSharp.Image.Load(filename);
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Buffer containing an image.
+ public CanvasImage(ReadOnlySpan data)
+ {
+ Image = SixLabors.ImageSharp.Image.Load(data);
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Stream containing an image.
+ public CanvasImage(Stream data)
+ {
+ Image = SixLabors.ImageSharp.Image.Load(data);
+ }
+
///
protected override Measurement Measure(RenderContext context, int maxWidth)
{