2013-06-14 46 views
10

UIImage'ı bayt dizisine dönüştürmem gerekiyor. Bir iOS uygulaması üretmek için Xamarin'in Visual Studio eklentisini kullanıyorum.UIImage'ın Byte Array'e Dönüştürülmesi

Aşağıdaki kodun bir kısmı görüntüyü alır, ancak bir Service Stack üzerinden bir UIImage yerine bir bayt dizisi olarak göndermem gerekir. o başka bir kopyasını oluşturmanız gerekir çünkü

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

cevap

20

utanmadan mümkünse, ben ServiceStack API kontrol beri uzun zaman oldu 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

çalınan ama, byte[] kaçınmaya çalışın aynı veriler. Çoğu durumda önemli değil, ancak görüntüler genellikle çok büyük.

E.g. bir aşırı yük varsa o image.AsJPEG kullanmak daha iyi görünüyor, bu yüzden bir System.IO.Stream sonra image.AsPNG().AsStream() kullanmak ve oryantasyon bayrağını tutmaz image.AsPNG() kullanarak

+2

:-) yükünü önlemek kabul ettiklerini() almak için akış Bu iki saat sürdü ;-). –

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

Bu kabul edilen yanıt olmalıdır .. – Indy9000

+0

Ayrıca .ToArray(); – Csharpest