android - Picasso 无法加载大图像(来自 Camera 和本地 Uri)

标签 android camera picasso

我在使用 Picasso 时遇到问题,试图从 Gallery 和 Camera Intent 中加载格式为 content://com.android.providers.media.documents/document/imageXXYYZZ 的本地 Uri 的大图像.

我正在使用标准调用加载图像:

Picasso.load(image_url)
        .resize(600, 240)
        .centerCrop()
        .into(imageTarget);

我在此处附加了一个 Target,当我收到 onBitmapFailed(Drawable errorDrawable) 错误时触发。此外,当我登录 Picasso 时,我得到:

06-23 12:13:54.267  22393-22393/it.b3lab.friendipity D/Picasso﹕ Main        created      [R100] Request{content://com.android.providers.media.documents/document/image%3A13345 resize(600,240) centerCrop}
06-23 12:13:54.277  22393-23010/it.b3lab.friendipity D/Picasso﹕ Dispatcher  enqueued     [R100]+9ms
06-23 12:13:54.285  22393-23038/it.b3lab.friendipity D/Picasso﹕ Hunter      executing    [R100]+15ms
06-23 12:13:54.813  22393-23010/it.b3lab.friendipity D/Picasso﹕ Dispatcher  batched      [R100]+546ms for error
06-23 12:13:55.014  22393-23010/it.b3lab.friendipity D/Picasso﹕ Dispatcher  delivered    [R100]+746ms
06-23 12:13:55.024  22393-22393/it.b3lab.friendipity I/picasso﹕ failed to load bitmap
06-23 12:13:55.024  22393-22393/it.b3lab.friendipity D/Picasso﹕ Main        errored      [R100]+756ms

只有当我尝试从图库(大约 1 MB 以上)和使用高分辨率相机智能手机(在我的例子中是在 Android 上运行的 Moto G)时从相机 Intent 加载大图像时才会发生这种情况5.0.1).我在 Android 4.4 上使用三星 S2 时没有收到此错误。

任何帮助将不胜感激!谢谢

最佳答案

您需要将内容 uri 解析为绝对 uri。例如:

public String getAbsolutePathFromURI( Uri contentUri ) {
  String[] proj = { MediaStore.Images.Media.DATA };
  Cursor cursor = activity.getContentResolver().query( contentUri, proj, null, null, null );
  int columnIndex = cursor.getColumnIndexOrThrow( MediaStore.Images.Media.DATA );
  cursor.moveToFirst();
  String path = cursor.getString( columnIndex );
  cursor.close();
  return path;
}

关于android - Picasso 无法加载大图像(来自 Camera 和本地 Uri),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31000407/

相关文章:

android - 两个 editText : android 中的时间比较

android - android froyo 2.2 上的 "FATAL EXCEPTION: GLThread 11"

android - 在显示对话框时如何停止拍摄相机

java - 通过提供视频路径获取视频缩略图的路径

java - 单击时使 RecyclerView 图像全屏显示

java - 如何仅将最后30秒捕获到文件中?

android - 如何捕获所需分辨率的视频?

android - 为 ImageView 重复调用时,适用于 Android 的 Picasso 库行为不一致

java - 使用 Picasso 将图像加载到位图中

android - 在 Android 中通过声音传输数据