19

我已经包含了“通过 myApp 共享”选项。我在接收活动类中插入了以下代码。

    // Get the intent that started this activity
    Intent intent = getIntent();
    Uri data = intent.getData();

    // Figure out what to do based on the intent type
    if (intent.getType().indexOf("image/") != -1) {
        // Handle intents with image data ...
}

检索位图图像的下一步是什么。

4

8 回答 8

40

因为你已经得到了 Uri。现在您必须传入该 UrigetBitmap()以获取位图并使用该位图。

Uri imageUri = intent.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
Imageview my_img_view = (Imageview ) findViewById (R.id.my_img_view);
my_img_view.setImageBitmap(bitmap);
于 2013-12-26T10:05:52.577 回答
9

从 uri 获取位图,

Bitmap  mBitmap = Media.getBitmap(this.getContentResolver(), uri);

希望这对您有所帮助。

于 2013-12-26T10:00:15.153 回答
3
Retrive bitmap from uri.....

public static Bitmap decodeUriToBitmap(Context mContext, Uri sendUri) {
        Bitmap getBitmap = null;
        try {
            InputStream image_stream;
            try {
                image_stream = mContext.getContentResolver().openInputStream(sendUri);
                getBitmap = BitmapFactory.decodeStream(image_stream);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return getBitmap;
    }
于 2017-03-03T05:09:54.807 回答
1

这对我来说是工作

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK)
{
    Uri imageUri = data.getData();
    Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
}
}
于 2018-01-29T12:48:30.133 回答
0

参考Android Developers 文档,您可以使用它从 URI 获取位图

    ....

    Uri uri = intent.getData();
    try {
        Bitmap bitmap = getBitmapFromUri(uri);
        // do something with this bitmap

    } catch (IOException e) {
        e.printStackTrace();
    }
}


private Bitmap getBitmapFromUri(Uri uri) throws IOException {
    ParcelFileDescriptor parcelFileDescriptor = context.getContentResolver().openFileDescriptor(uri, "r");
    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
    parcelFileDescriptor.close();
    return image;
}
于 2021-02-07T12:51:20.897 回答
0

你可以试试这个。您可以在 onActivityResult 方法中调用 setPic()。我在应用程序中使用它来拍照并将其放入 ImageView 中。

private void setPic() {

    //currentPhotoPath contains path of image file.
    //visorFoto is a reference to an ImageView object.
    File file = new File(currentPhotoPath);
    Uri imageUri = Uri.fromFile(file);
    visorFoto.setImageURI(imageUri);

}
于 2019-05-28T23:00:39.533 回答
0

一旦你有了 Uri,你可以使用类似的东西:-

fun getBitmapFromUri(context: Context, uri: Uri): Bitmap? {
        
        var parcelFileDescriptor: ParcelFileDescriptor? = null
        return try {
            parcelFileDescriptor = context.contentResolver.openFileDescriptor(uri, "r")
            val fileDescriptor: FileDescriptor? = parcelFileDescriptor?.fileDescriptor
            val image = BitmapFactory.decodeFileDescriptor(fileDescriptor)
            parcelFileDescriptor?.close()
            image
        } catch (e: Exception) {
            //Log.e(TAG, "Failed to load image.", e)
            null
        } finally {
            try {
                parcelFileDescriptor?.close()
            } catch (e: IOException) {
                e.printStackTrace()
                //Log.e(TAG, "Error closing ParcelFile Descriptor")
            }
        }
    }
于 2020-12-22T03:52:22.517 回答
-5

请选择此链接。

这就是您正在寻找的 如何从 Uri 获取位图?

试试这个它对我有用:

public static Bitmap getBitmapFromURL(String src) {
        try {
            System.out.printf("src", src);
            URL url = new URL(src);
            HttpURLConnection connection = (HttpURLConnection) url
                    .openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            System.out.printf("Bitmap", "returned");
            myBitmap = Bitmap.createScaledBitmap(myBitmap, 100, 100, false);//This is only if u want to set the image size.
            return myBitmap;
        } catch (IOException e) {
            e.printStackTrace();
            System.out.printf("Exception", e.getMessage());
            return null;
        }
于 2013-12-26T10:02:21.150 回答