我需要将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();
答案 0 :(得分:25)
using (NSData imageData = image.AsPNG()) {
Byte[] myByteArray = new Byte[imageData.Length];
System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, myByteArray, 0, Convert.ToInt32(imageData.Length));
}
答案 1 :(得分:15)
自从我检查ServiceStack API已经很长时间了,但是,如果可能的话 ,请尽量避免使用byte[]
,因为它需要创建相同数据的另一个副本。在许多情况下并不重要,但图像往往很大。
E.g。如果有一个接受System.IO.Stream
的重载然后使用image.AsPNG ().AsStream ()
并避免开销: - )
答案 2 :(得分:10)
Stream pst = img.AsPNG().AsStream();