在 Xamarin 上调整图像大小和裁剪图像

问题描述

我从 Xamarin Community Toolkit Cameraview 获取一个字节 [],将其转换为流并通过 webapi 将其发送到我的服务器:

HttpContent fileStreamContent = new StreamContent(stream);

它可以工作,而且速度快到几毫秒。

我想在发送前旋转和裁剪图像,我用这个代码尝试了 SkiaSharp:

var skBitmap = SKBitmap.Decode(stream);

var rotated = new SKBitmap(skBitmap.Height,skBitmap.Width);
               
using (var surface = new SKCanvas(rotated))
{
    surface.Translate(rotated.Width,0);
    surface.Rotatedegrees(90);
    surface.DrawBitmap(skBitmap,0);
}
                           
var h = rotated.Height;
var w = rotated.Width;

var skImage = SKImage.FromBitmap(rotated);
var subset = skImage.Subset(SKRectI.Create(0,(h - (w / 2)) / 2,w,w/2));

var encodedData = subset.Encode();

var streamProcessed = encodedData.Asstream();

HttpContent fileStreamContent = new StreamContent(streamProcessed);

它可以工作,但在最近的工业 Zebra TC21 Android 设备上,旋转需要 3 秒,裁剪需要 6 秒,其他操作需要几分之一秒。 正常吗?有什么办法可以加快速度,还是我做错了什么? 如果我在我的笔记本电脑(充当服务器)上执行相同的操作,在从设备接收到完整图片后,使用 ImageSharp(在 Xamarin 上不起作用),相同的操作需要不到半秒的时间。

谢谢, 马蒂亚

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)