【问题标题】:Converting UIImage to Byte Array将 UIImage 转换为字节数组
【发布时间】:2013-06-11 07:53:29
【问题描述】:

我需要将 UIImage 转换为字节数组。我正在使用 Xamarin 的 Visual Studio 插件来生成 iOS 应用程序。

下面的代码获取图像,但我需要将它作为字节数组而不是 UIImage 发送到服务堆栈。

        var signatureView = new SignaturePad.SignaturePadView(new RectangleF(10, 660, 300, 150));
        signatureView.BackgroundColor = UIColor.White;
        this.View.AddSubview(signatureView);
        UIImage signatureImage = signatureView.GetImage();

【问题讨论】:

    标签: c# mono xamarin.ios xamarin


    【解决方案1】:

    无耻地从ChrisNTR盗取

    using (NSData imageData = image.AsPNG()) {
      Byte[] myByteArray = new Byte[imageData.Length];
      System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, myByteArray, 0, Convert.ToInt32(imageData.Length));
    }
    

    【讨论】:

      【解决方案2】:

      我已经很长时间没有检查 ServiceStack API,但是,如果可能,请尽量避免使用 byte[],因为它需要创建相同数据的另一个副本。在许多情况下这并不重要,但图像通常很大。

      例如如果有接受System.IO.Stream 的重载,则使用image.AsPNG ().AsStream () 并避免开销:-)

      【讨论】:

      • 使用 image.AsPNG() 不会保留方向标志,因此使用 image.AsJPEG() 来获取流似乎更好。这花了我两个小时;-)。
      【解决方案3】:
      Stream pst =   img.AsPNG().AsStream();
      

      【讨论】:

      • 你也可以使用 .ToArray();
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多