【问题标题】:how to retrieve image from library image picker android如何从库图像选择器android中检索图像
【发布时间】:2019-11-20 16:48:16
【问题描述】:

请问如何从这个库中检索图像?

https://github.com/akshay2211/PixImagePicker

我不知道如何从该库中检索图像。我想展示我的主要活动。 我已经尝试从指南添加此代码

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == Activity.RESULT_OK && requestCode == RequestCode) {
                ArrayList<String> returnValue = data.getStringArrayListExtra(Pix.IMAGE_RESULTS);
        }
    }

这是我使用 glide 检索图像的源代码

 for (int i = 0; i < returnValue.size(); i++) {
            String path = returnValue.get(i);
            StringBuilder builder = new StringBuilder(path);
            builder.deleteCharAt(0);
            File file = new File(builder.toString());
            Uri imageUri = Uri.fromFile(file);

            Glide.with(this)
                    .load(imageUri)
                    .onlyRetrieveFromCache(true)
                    .into(imageView);

            System.out.println("value : " + returnValue.get(i));
            //LoadImageFromWebOperations(returnValue.get(i));
        }

我总是会遇到这样的错误

W/Glide: Load failed for file:///storage/emulated/0/DCIM/Camera/IMG_20191116_110843.jpg with size [1080x1542]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource

【问题讨论】:

  • 请告诉您在该数组列表中收到的内容。请输入这些字符串的值。
  • 从源代码中,它包含一个图像 url 列表:ArrayList&lt;String&gt; list = new ArrayList&lt;&gt;(); for (Img i : selectionList) { list.add(i.getUrl()); // Log.e("Pix images", "img " + i.getUrl()); } Intent resultIntent = new Intent(); resultIntent.putStringArrayListExtra(IMAGE_RESULTS, list); 所以你需要从 url 加载图像。
  • @blackapps 我没有得到任何我尝试的东西 (int i = 0; i
  • @blackapps 我现在把我的代码贴出来了

标签: java android android-studio imageview image-gallery


【解决方案1】:
   for (int i = 0; i < returnValue.size(); i++) {
        String path = returnValue.get(i);

        System.out.println ( "path: " + path);

        Glide.with(this)
                .load(path)
                .onlyRetrieveFromCache(true)
                .into(imageView);

        break; // load only one image in the imageview
     }

请告诉path的值。

   .onlyRetrieveFromCache(true)

我不知道这是否正确。

在清单中你需要

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

您应该添加代码以在运行时要求用户确认该权限。

returnValue.size() 的值是多少?

【讨论】:

  • returnValue.size() 是数组列表的长度。 path 是文件的路径位置,例如 /storage/filename.jpg
【解决方案2】:

从源代码中,它包含一个图像 url 列表: 来源:https://github.com/akshay2211/PixImagePicker/blob/master/pix/src/main/java/com/fxn/pix/Pix.java

ArrayList<String> list = new ArrayList<>(); 
for (Img i : selectionList) 
{ list.add(i.getUrl()); // Log.e("Pix images", "img " + i.getUrl());
 } 
Intent resultIntent = new Intent(); resultIntent.putStringArrayListExtra(IMAGE_RESULTS, list); 

因此,您需要遍历 url 列表并加载相应的图像。

以下是这样一种方法:

public static Drawable LoadImageFromWebOperations(String url) {
    try {
        InputStream is = (InputStream) new URL(url).getContent();
        Drawable d = Drawable.createFromStream(is, "src name");
        return d;
    } catch (Exception e) {
        return null;
    }

}

【讨论】:

  • 所以我需要在结果活动中添加 LoadImageFromWebOperations 吗?然后我可以加载到网格视图?
  • 我正在使用这个,但仍然没有从那个选择器那里得到任何回报for (int i = 0; i &lt; returnValue.size(); i++) { //System.out.println("value" + returnValue.get(i)); LoadImageFromWebOperations(returnValue.get(i)); }
猜你喜欢
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多