我正在寻找调整SKImage大小的最快方法。不幸的是,我找到了一些例子。
我提出这个问题是因为如果我同时在多个线程(在我的情况下大约60个线程)中执行这些函数,每个单独缩放函数的执行时间会增加到20倍以上。
我已经尝试了以下方法,性能看起来非常相似,有更好的方法吗?
方法1:
SKImage src = (...);
SKImageInfo info = new SKImageInfo(width, height, SKColorType.Bgra8888);
SKImage output = SKImage.Create(info);
src.ScalePixels(output.PeekPixels(), SKFilterQuality.None);
方法二:
SKImage src = (...);
SKImage output;
float resizeFactorX = (float)width / (float)Src.Width;
float resizeFactorY = (float)height / (float)Src.Height;
using (SKSurface surface = SKSurface.Create((int)(Src.Width *
resizeFactorX), (int)(Src.Height * resizeFactorY),
SKColorType.Bgra8888, SKAlphaType.Opaque))
{
surface.Canvas.SetMatrix(SKMatrix.MakeScale(resizeFactorX, resizeFactorY));
surface.Canvas.DrawImage(Src, 0, 0);
surface.Canvas.Flush();
output = surface.Snapshot();
}
SKSurface.Create(new SKImageInfo { Width = resizedWidth, Height = resizedHeight, ColorType = SKImageInfo.PlatformColorType, AlphaType = SKAlphaType.Premul })
。 - MiffTheFox