Converting UIImage to Byte Array
18,684
Solution 1
Shamelessly stolen from 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));
}
Solution 2
It's been a long time since I checked the ServiceStack API but, if possible, try to avoid byte[]
since it will need to create another copy of the same data. It does not matter in many cases but images are often huge.
E.g. if there's an overload that accept a System.IO.Stream
then use image.AsPNG ().AsStream ()
and avoid the overhead :-)
Solution 3
Stream pst = img.AsPNG().AsStream();
Related videos on Youtube
Author by
Yahiko Kikikoto
Updated on September 14, 2022Comments
-
Yahiko Kikikoto over 1 year
I need to convert a UIImage to a byte array. I am using Xamarin's Visual Studio plugin to produce an iOS application.
The bit of code below gets the image, but I need to send it across a Service Stack as a byte array instead of a UIImage.
var signatureView = new SignaturePad.SignaturePadView(new RectangleF(10, 660, 300, 150)); signatureView.BackgroundColor = UIColor.White; this.View.AddSubview(signatureView); UIImage signatureImage = signatureView.GetImage();
-
asp_net about 10 yearsUsing image.AsPNG() does not keep the orientation flag, so it seems better to use image.AsJPEG() to get the stream. That took me two hours ;-).
-
Csharpest about 6 yearsYou could also use .ToArray();