微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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 举报,一经查实,本站将立刻删除。