Преобразование UIImage в байт-массив
Мне нужно преобразовать UIImage в массив байтов. Я использую плагин Xamarin Visual Studio для создания приложения iOS.
Бит кода ниже получает изображение, но мне нужно отправить его через Service Stack в виде байтового массива вместо 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
Прошло много времени с тех пор, как я проверил API ServiceStack, но , если возможно, попробуйте избежать byte[]
, так как ему нужно будет создать другую копию тех же данных. Во многих случаях это не имеет значения, но изображения часто огромны.
например. если есть перегрузка, которая принимает System.IO.Stream
, то используйте image.AsPNG ().AsStream ()
и избегайте служебных данных: -)
Ответ 3
Stream pst = img.AsPNG().AsStream();