2013-06-14 9 views
10

Ich muss ein UIImage in ein Byte-Array konvertieren. Ich verwende Xamarins Visual Studio-Plugin, um eine iOS-Anwendung zu erstellen.Konvertieren von UIImage in Byte-Array

Das Bit Code unten erhält das Bild, aber ich muss es über eine Service-Stack als Byte-Array anstelle eines UIImage senden.

 var signatureView = new SignaturePad.SignaturePadView(new RectangleF(10, 660, 300, 150)); 
     signatureView.BackgroundColor = UIColor.White; 
     this.View.AddSubview(signatureView); 
     UIImage signatureImage = signatureView.GetImage(); 

Antwort

20

gestohlen Schamlos von 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)); 
} 
13

Es ist eine lange Zeit her, seit ich das ServiceStack API überprüft aber, wenn möglich, versuchen byte[] zu vermeiden, da es eine weitere Kopie der erstellen müssen gleiche Daten In vielen Fällen spielt es keine Rolle, aber die Bilder sind oft riesig.

z. wenn es eine Überladung, die ein System.IO.Stream dann image.AsPNG().AsStream() und vermeiden Sie den Overhead :-)

+2

Mit image.AsPNG() nicht akzeptieren, die Orientierung Flagge halten, so ist es besser scheint image.AsJPEG() zu verwenden zu bekommen der Strom. Das hat zwei Stunden gedauert ;-). –

7
Stream pst = img.AsPNG().AsStream(); 
+0

Dies sollte die akzeptierte Antwort sein. – Indy9000

+0

Sie könnten auch. ToArray(); – Csharpest

Verwandte Themen