2011-05-06 71 views
0

有人可以發佈如何使用相機,捕獲圖像,在圖像視圖中預覽圖像,以jpg壓縮圖像並將字節上傳到遠程服務器的示例?我能找到的最近的是以下。我們有相機和圖像捕捉功能,但我們需要知道如何預覽,將jpg壓縮/調整大小爲640/480px,大小約爲120kb,然後將字節上傳到遠程服務器。感謝大家的幫助。 http://android-coding.blogspot.com/2010/12/intent-of-mediastoreactionimagecapture.htmlMonodroid相機/ imageview示例

回答

0

這是迄今爲止最接近的例子......當使用額外的輸出時,這將返回空數據。仍試圖訪問完整的圖像/照片,而不是縮略圖。

private void saveFullImage() { 
     Intent intent = new Intent(Android.Provider.MediaStore.ActionImageCapture); 

     string file = System.IO.Path.Combine(Android.OS.Environment.DirectoryDcim.ToString(), "test.jpg"); 

     var outputFileUri = Android.Net.Uri.Parse(file); 
     intent.PutExtra(Android.Provider.MediaStore.ExtraOutput, outputFileUri); 
     StartActivityForResult(intent, TAKE_PICTURE); 
    } 

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) 
    { 
     base.OnActivityResult(requestCode, resultCode, data); 
     if (requestCode == TAKE_PICTURE) 
     { 
      Uri imageUri = null; 
      // Check if the result includes a thumbnail Bitmap 
      if (data != null) 
      { 
       if (data.HasExtra("data")) 
       { 
        var thumbnail = data.GetParcelableArrayExtra("data"); 
        // TODO Do something with the thumbnail 
       } 
      } 
      else 
      { 
       var outputFileUri = data.GetParcelableArrayExtra("outputFileuri"); 
       // TODO Do something with the full image stored 
       // in outputFileUri 
      } 
     } 
    } 
+0

任何人都成功地使用Camera.IShutterCallback?我們正在編寫我們自己的相機應用程序,以便連續拍攝完整照片。 – 2011-05-12 22:39:33

1

看你的代碼有一些事情我發現是錯誤的:

- [相機功能] -

  1. 不要創建自己的文件。這不是必需的。使用ContentResolver.Insert函數返回一個包含圖片的文件URI,just like done here並且如果您想檢查是否存在外部存儲器,還要接管isMounted。
  2. 您正在檢查是否有數據,然後檢查是否有縮略圖。如果沒有縮略圖,你會得到完整的圖像。除非你想在完整版的拇指沒有被回饋的情況下製作一個大拇指,否則這是毫無意義的?你不只是想抓住完整版本或兩者,但不是這個或?
  3. 您正在檢索字符串值變量以獲取完整圖像的URI?只需保存從代碼中獲得的uri作爲屬性(例如,在活動類中稱爲「myPhotoURI」);在處理相機意圖結果的OnActivityResult函數中,只需記住該URI並將其用作以下內容(是的,您「再看到它的權利;我甚至爲此使用數據的意圖只是想起URI):

    Bitmap imageFromCam = MediaStore.Images.Media.GetBitmap(this.ContentResolver, Android.Net.Uri.Parse(myPhotoURI));

  4. 要從庫抓取的圖像只使用SelectImageFromStorage()函數from this question's answer和檢索OnActivityResult檢查中所選圖像的URI僅使用:

    Android.Net.Uri selectedImageUri = data.ToURI();

這就是我的魅力。

- [發送數據到WebService] -

假設你正在使用WCF或將要接收的圖像數據的字節數組web服務;已批准的答案to this question給出了一個很好的示例,說明如何將圖像轉換爲字節數組(這正是WCF Web服務所要的,無論如何)

我認爲這些方向會讓你走。