2012-01-17 31 views
1

所以我就變得越來越爲相機打開,拍照,然後返回相機的結果如下:通行證相機OnActivityResult到web服務服務器上保存爲圖像

bt.Click += delegate 
    { 
     Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
     StartActivityForResult(intent, 0); 
    }; 
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) 
    { 
     base.OnActivityResult(requestCode, resultCode, data); 

     if (resultCode == Result.Ok && requestCode == 0) 
     { 
      string result = data.ToURI();    
     } 

值的結果最終爲「#Intent; action = inline-data; B.bitmap-data = true; end」。我不知道從這裏走到哪裏,只要拍攝照片的結果,並能夠將其轉到我的網絡服務,然後將其保存爲服務器上的圖像文件。

編輯:任何人有同樣的問題

bt.Click += delegate 
    { 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    StartActivityForResult(intent, 0); 
    }; 
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) 
{ 
    Bitmap bitmap = (Android.Graphics.Bitmap)data.Extras.Get("data"); 

    using (var stream = new System.IO.MemoryStream()) 
    { 
     bitmap.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 0, stream); 
     byte[] imageBytes = stream.ToArray(); 
     string base64String = Convert.ToBase64String(imageBytes); 

     inst.saveImage(base64String); 
    } 
} 
    [WebMethod] 
    public void saveImage(string stream) 
    { 
     byte[] imageBytes = Convert.FromBase64String(stream); 
     MemoryStream ms = new MemoryStream(imageBytes, 0, 
      imageBytes.Length); 
     var filepath = "C:\\Temp\\Test.png"; 

     using (Stream file = File.OpenWrite(filepath)) 
     { 
      ms.CopyTo(file, (int)stream.Length); 
     } 

    } 

回答

1

你得到的數據包括位圖數據的最終代碼,爲你的「結果」字符串顯示。你可以拉出來的位圖的意圖,並通過做這樣的事情壓縮出來到流:

var bitmap = (Android.Graphics.Bitmap) data.Extras.Get("data"); 

using (var stream = new MemoryStream()) 
{ 
    bitmap.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 0, stream); 

    // stream now contains the image data 
} 

你可以使用任何類型的有.NET流的,所以MemoryStream的僅僅是一個例子。

+0

var bitmap =(Android.Graphics.Bitmap)data.GetStringExtra(「data」);行產生空引用異常。 – jmease 2012-01-17 19:11:22

+0

這是有道理的,我不是故意調用GetStringExtra,當它顯然不是一個字符串...更新。 – 2012-01-17 20:20:12

+0

不再收到空引用錯誤。但仍然不確定流包含任何內容。當將流傳遞給webservice進行保存時,我需要將流轉換爲字符串(當我將它作爲流保留時,會出現瘋狂的類型不匹配情況)。當我做StreamReader閱讀器=新的StreamReader(流); string text = reader.ReadToEnd();文字是空的。 – jmease 2012-01-18 12:57:19