我正在构建一个 Xamarin 应用程序,使用ImageSharp进行图像处理。
我注意到 ImageSharp 操作在模拟器中非常慢,并且在部署到物理设备(Galaxy Note 8)时速度非常慢。
速度很慢的事情:
// Load image (very slow)
var image = SixLabors.ImageSharp.Image.Load(stream);
// Manipulate image (equally slow)
image.Mutate(i => i.Resize(new ResizeOptions
{
Mode = ResizeMode.Pad,
Position = AnchorPositionMode.Top,
Size = new SixLabors.Primitives.Size(600,400))
}));
请注意,图像加载良好(尽管速度很慢)并且调整大小有效,但速度非常慢(30-60 秒)。
从 .NET Core 控制台程序执行相同的代码可将加载和操作时间减少到大约 1-2 秒。
附加调试器后,当 ImageSharp 操作运行时,我看到了大量的这些:
GC_MINOR:(幼儿园已满)
我不太确定如何解决这个问题,是我克隆 ImageSharp 存储库并使用自定义构建进行调试的唯一选择吗?
编辑:不确定这是否与此问题有关?
编辑#2:我放弃了 ImageSharp,还测试了 OpenCV,但没有特别的效果,然后选择了SkiaSharp,它开箱即用,效果很好。