将 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 转换为字节数组