File: SkiaSharpRasterTools.cs
Web Access
Project: src\src\SingleProject\Resizetizer\src\Resizetizer.csproj (Microsoft.Maui.Resizetizer)
using System;
using System.Diagnostics;
using SkiaSharp;
 
namespace Microsoft.Maui.Resizetizer
{
	internal class SkiaSharpRasterTools : SkiaSharpTools, IDisposable
	{
		SKImage img;
 
		public SkiaSharpRasterTools(ResizeImageInfo info, ILogger logger)
			: this(info.Filename, info.BaseSize, info.Color, info.TintColor, logger)
		{
		}
 
		public SkiaSharpRasterTools(string filename, SKSize? baseSize, SKColor? backgroundColor, SKColor? tintColor, ILogger logger)
			: base(filename, baseSize, backgroundColor, tintColor, logger)
		{
			var sw = new Stopwatch();
			sw.Start();
 
			img = SKImage.FromEncodedData(filename);
 
			sw.Stop();
			Logger?.Log($"Open RASTER took {sw.ElapsedMilliseconds}ms ({filename})");
		}
 
		public override SKSize GetOriginalSize() =>
			img.Info.Size;
 
		public override void DrawUnscaled(SKCanvas canvas, float scale) =>
			canvas.DrawImage(img, 0, 0, SamplingOptions, Paint);
 
		public void Dispose()
		{
			img?.Dispose();
			img = null;
		}
	}
}