17

我需要将 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();
4

3 回答 3

29

无耻地从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));
}
于 2013-06-14T20:55:08.010 回答
16

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

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

于 2013-06-14T23:10:01.383 回答
13
Stream pst =   img.AsPNG().AsStream();
于 2014-02-21T22:50:05.740 回答