2011-10-20 67 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()的底部

相关问题