c# - 将图像从 Ios 应用程序发送到 Web API 服务

标签 c# ios json rest asp.net-web-api

我们有一个 IOS 应用程序,它将图像发送到 asp.net Web api 应用程序。因此,我们将图像转换为 Base64,然后将其作为字符串发送到 Web 服务。

问题是图像的大小很大,所以转换为 base64 需要很多时间,结果字符串的大小大于初始图像的大小。

我需要知道:

  • 如果存在另一种更好的方法,而不是转换为 Base64,可以在调用网络服务之前转换图像
  • 我使用 Gzip 来压缩/解压缩字节数组,如下所示:

     static byte[] Compress(byte[] data)
        {
            using (var compressedStream = new MemoryStream())
            using (var zipStream = new GZipStream(compressedStream,  CompressionMode.Compress))
            {
                zipStream.Write(data, 0, data.Length);
                zipStream.Close();
                return compressedStream.ToArray();
            }
        }
    

是否可以将图像转换为IOS部分中的字节数组,然后调用网络服务?或者将诸如 compressedStreamGZipStream 之类的对象公开为服务参数?

谢谢,

最佳答案

可以将图像转换为字节数组,这是一个涉及到的 SO 答案:how to convert byte array to image in ios

然而,最大的问题是:您真的需要那么大的图像吗?您需要考虑到,一旦有多个用户这样做,服务就会变慢,并且很可能会逐渐停止,这将使您的应用难以/缓慢使用。

在发送图像之前,您可能需要考虑缩小图像。您可以减小尺寸、质量并使其更小,然后通过网络发送结果。

这是另一篇涉及此内容的 SO 帖子:What's the easiest way to resize/optimize an image size with the iPhone SDK?

当然,如果您使用 xamarin 和 c# 来构建您的应用程序,那么它会更容易,您可以找到执行这两项操作的代码示例。

关于c# - 将图像从 Ios 应用程序发送到 Web API 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41013896/

相关文章:

c# - 在 data-originalvalue 属性中使用时,MVC 4 View Page 中的 Null Reference Exception?

C# Azure 服务总线队列 OnMessage 回调

ios - UIImage AsPNG 和 AsJPEG 失败

android - Gson 抛出 "BEGIN_OBJECT expected but BEGIN_ARRAY found"- 如何使用 TypeToken

javascript - 将输入字段转换为数组并保存到本地存储

c# - 使用 yield return 的 IEnumerable 和递归

c# - 从 cookie 容器向 selenium 添加 cookie

ios - rac_command 只响应单击

iphone - ios 4.x 和 5 之间的兼容性?

javascript - Electron 不将 json 文件添加到应用程序