2011-10-20 75 views
2

我實現了從SD卡中的相機相冊獲取圖像的應用程序,但它無法正常工作。Android - 如何使用意圖數據獲取圖像

這裏意圖返回這樣意圖{ACT = com.htc.HTCAlbum.action.ITEM_PICKER_FROM_COLLECTIONS DAT =含量://媒體/外部/圖像/媒體/ 9典型值=圖像/ JPEG(具有額外)}

在代碼

位圖縮略圖=(位圖)data.getExtras()得到( 「數據」)。
這裏(位圖)data.getExtras()。獲得( 「數據」) 這部分返回

如何在這裏得到位圖請任何人都可以幫助我。

代碼:

cam_images_btn.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 

      Intent cam_ImagesIntent = new Intent(Intent.ACTION_GET_CONTENT); 
      cam_ImagesIntent.setType("image/*"); 
      startActivityForResult(cam_ImagesIntent, CAMERA_IMAGES_REQUEST); 
     }  
    }); 

    if(requestCode == CAMERA_IMAGES_REQUEST && resultCode==Activity.RESULT_OK) 
    { 
     System.out.println("data(CAMERA_IMAGES_REQUEST):"+data); 
     if(data != null) 
     {   
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      System.out.println("Bitmap(CAMERA_IMAGES_REQUEST):"+thumbnail); 
      System.out.println("cap_image(CAMERA_IMAGES_REQUEST):"+cap_image); 
      cap_image.setImageBitmap(thumbnail); 
     } 
     else 
     { 
      System.out.println("SDCard have no images"); 
      Toast.makeText(camera.this, "SDCard have no images", Toast.LENGTH_SHORT);   
     } 
    } 

感謝

+0

圖像URI被返回而不是圖像本身。 [看看這裏如何解析URI和獲取圖像] –

回答

6

不要在你的代碼如下:

if(data != null) 
    {   
     Uri selectedImageUri = data.getData(); 
     filestring = selectedImageUri.getPath(); 

     Bitmap thumbnail = BitmapFactory.decodeFile(filestring, options2); 

     System.out.println("Bitmap(CAMERA_IMAGES_REQUEST):"+thumbnail); 
     System.out.println("cap_image(CAMERA_IMAGES_REQUEST):"+cap_image); 
     cap_image.setImageBitmap(thumbnail); 
    } 

這應該工作。

編輯: 此外,如果你想有一個 「縮略圖」 執行以下操作:

Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(
        getContentResolver(), selectedImageUriId, 
        MediaStore.Images.Thumbnails.MICRO_KIND, 
        (BitmapFactory.Options) null); 
+0

什麼是option2?我可以用null替換這個 – naresh

+0

選項是獲取圖像參數以及如何設置它。使用BitmapFactory.Options創建它選項= new BitmapFactory.Options(); – GamDroid

+0

什麼是selectedImageUriId?先前的代碼仍然不起作用,它返回位圖 – naresh

0

我有這樣的代碼:

public void onGalleryRequest() { 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(
      Intent.createChooser(intent, 
         getResources().getString(R.string.selectImage)), 
      GALLERY_REQ); 
} 

,然後在onActivityResult我做這個測試:

if (requestCode == CAMERA_PIC_REQUEST && data != null 
      && resultCode != 0) 

它適用於我api級別7

1

好方式去這樣做很容易,只要:

 //Get incoming intent 
     Intent intent = getIntent(); 
     intent.setType("image/*"); 
     String action = intent.getAction(); 
     String type = intent.getType(); 

     if(Intent.ACTION_SEND.equals(action) && type != null){ 
      handleIncomingData(intent); 
     } 


    public void handleIncomingData(Intent data){ 
     Uri imageSelected = data.getParcelableExtra(Intent.EXTRA_STREAM); 
     try{ 
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageSelected); 
      imageView.setImageBitmap(bitmap); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

都記得第一次初始化後,把這個代碼,否則你會得到一個NullPointerException。我更願意將它放在onCreate()的底部

相關問題