将 UIImage 转换为字节数组

Posted

技术标签:

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

我需要。我正在使用 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();

【问题讨论】:

【参考方案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();

以上是关于将 UIImage 转换为字节数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 4 中将 UIImage 转换为字节数组

如何在Swift 4中将UIImage转换为字节数组

在 Swift 中将字节数组转换为 UIImage

如何将UIImagePicker图像转换为字节数组objective-c

如何快速将字节数组转换为 base64 字符串?

300x300像素Png图像到字节数组