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) {