2013-06-14 2 views
10

UIImage를 바이트 배열로 변환해야합니다. Xamarin의 Visual Studio 플러그인을 사용하여 iOS 응용 프로그램을 제작하고 있습니다.UIImage를 바이트 배열로 변환

아래의 코드 비트가 이미지를 가져 오지만 서비스 스택을 통해 UIImage 대신 바이트 배열로 보내야합니다. 그것은 또 다른 복사본을 생성해야하기 때문에

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

답변

20

이 뻔뻔 가능하다면, 나는 ServiceStack API를 검사 이후 오랜 시간이되었습니다 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

에서 도난하지만, byte[]을 피하려고 동일한 데이터. 그것은 많은 경우에 중요하지 않지만 이미지는 종종 거대합니다.

예. 과부하가 있다면 image.AsJPEG를 사용하는 것이 좋습니다 것 같다 있도록하는 System.IO.Stream 다음 image.AsPNG().AsStream()을 사용하여 방향 플래그를 유지하지 않습니다 image.AsPNG()를 사용

+2

:-) 오버 헤드를 피하기 동의하는() 얻을 수 있습니다 스트림. 2 시간이 걸렸습니다 ;-). –

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

이것은 대답 일 것입니다. – Indy9000

+0

.ToArray(); – Csharpest