如何将图像从图库加载到intent

时间:2012-09-19 09:16:34

标签: android image-processing android-gallery

我正在尝试从相机或图库加载图像(而不是URL)并将其保存到全局类。 (目前我正试图进入图像,尚未定义任何类别。)

所以我认为相机正确地返回图像,并将其放入束中,如果可能的话,我喜欢对Gallery使用相同的方法。

所以我有:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode==RESULT_OK){
        Bundle extras = data.getExtras();
        bmp = (Bitmap) extras.get("data");

    }
} 

这两个选择,显然我做了一些错误的画廊:

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
    switch(arg2){
    case 0:
        i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(i, cameraData);
        break;
    case 1:

        Intent intent = new Intent( Intent.ACTION_GET_CONTENT );
        intent.setType( "image/*" );

        //i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, 10); 
        break;
    }

我无法提供结果:资源上的空指针异常:dat = content:// media / external / images / media / 23

所以我想我做错了什么。

想法类似于在Instagram中看到的行为,拍照或选择现有的行为,当选择时它应该存储在一些单一对象中,因为我还有3个选项可以在我的图像再次显示之前选择应用程序。

我不确定这是否是处理图像的最佳方式,因此这里的任何建议也是受欢迎的。

TNX

1 个答案:

答案 0 :(得分:1)

onActivityResult,试试这段代码。

InputStream in = getContentResolver().openInputStream(data.getData());
// get picture size.
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(in, null, options);
in.close();
// resize the picture for memory.
int width = options.outWidth / displayWidth + 1;
int height = options.outHeight / displayHeight + 1;
int sampleSize = Math.max(width, height);
options.inSampleSize = sampleSize;
options.inJustDecodeBounds = false;
in = getContentResolver().openInputStream(data.getData());
// convert to bitmap with declared size.
Bitmap bitmap = BitmapFactory.decodeStream(in, null, options);
in.close();