当前位置: 首页 > 知识库问答 >
问题:

使用毕加索、Glide、Image Loader、Universal Image Loader加载图像失败

赫连法
2023-03-14

我已经创建了印地语视频歌曲应用程序,但视频拇指不能显示在视频列表中。(已加载单个图像,但无法加载多个图像阵列。)

使用多图像加载程序库但不加载图像:

滑动:

implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'


Glide .with(viewHolder.icon_1.getContext())
            .load(((AppModelicon) this.b.get(i)).getThumnail())
            .into(viewHolder.icon_1)  ;

Glide.with(MainActivity.this)
            .load("https://img.youtube.com/vi/EEX_XM6SxmY/mqdefault.jpg")
            .placeholder(R.drawable.ic_menu_camera)
            .error(R.drawable.ic_menu_gallery)
            .listener(new RequestListener<Drawable>() {
                @Override
                public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                    // log exception
                    Log.e("TAG", "Error loading image", e);
                    return false; // important to return false so the error placeholder can be placed
                }

                @Override
                public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                    return false;
                }
            })
            .into(viewHolder.icon_1);

毕加索:

implementation 'com.squareup.picasso:picasso:2.+'

Picasso.get()
            .load("https://img.youtube.com/vi/EEX_XM6SxmY/mqdefault.jpg")
            .resize(50, 50)
            .centerCrop()
            .into(viewHolder.icon_1);

将请求管理器与glide一起使用:

RequestManager requestManager = Glide.with(a)
            .applyDefaultRequestOptions(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.NONE))
            .applyDefaultRequestOptions(RequestOptions.placeholderOf(R.drawable.ic_menu_camera));
                requestManager
            .applyDefaultRequestOptions(RequestOptions.skipMemoryCacheOf(true));
                requestManager.load(pathToFile)
            .into(viewHolder.icon_1);

后台任务方法使用:

String pathToFile = this.b.get(i).getThumnail();
DownloadImageWithURLTask downloadTask = new DownloadImageWithURLTask(viewHolder.icon_1);
downloadTask.execute(pathToFile);

public class DownloadImageWithURLTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageWithURLTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String pathToFile = urls[0];
        Bitmap bitmap = null;
        try {
            InputStream in = new java.net.URL(pathToFile).openStream();
            bitmap = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return bitmap;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
}

请帮助我如何解决这个问题。

共有3个答案

封鸿雪
2023-03-14

删除依赖项中的下一行

annotationProcessor'com.github.bumptech.glide:编译器:4.10.0'

吕鸿文
2023-03-14

不要通过MainActivity.this上下文总是错误的...

试试这个

//in activity
Glide.with(this) 
       .load("https://pbs.twimg.com/profile_images/1123379185764917248/On9ZnfVh.png")
       .into(imageView)

//in Fragments
Glide.with(view.context)
  .load("url")
  .into(imageView)

替换。加载(“url”)和“imageView”为您自己的。

杨曜瑞
2023-03-14

如果您在recyclerview中加载图像,下面的代码可能会对您有所帮助。

@Override
public void onBindViewHolder(final ViewHolder holder, int position)
{
    Glide.with(this.context)
            .load(urls.get(position))
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .into(holder.getImage());
}

有关更多完整教程,请访问https://ledron.github.io/RecyclerView/

 类似资料:
  • 正如你可以看到的使用链接,毕加索只有3个选项加载一个图像。我的问题是,如果您有一个从API的JSON响应解析的base64字符串,那么如何加载图像?

  • 我正在使用毕加索图书馆。我知道,如果我将图片从URL加载到图像视图中,有一种回调方法。但我不想加载到imageview中。相反,我想将其另存为位图。所以我用了下面的代码 我怎样才能得到一个回调方法,知道我的图像是成功下载使用毕加索? 不要说位图对象的空检查。这会导致错误。

  • 我面临毕加索无法快速加载图像的问题。 有3个显示左、中、右图像。在快进/后退时,对于给定的时间点,选择左、中、右并显示在三个框中。 这是初始化。缓存是100MB以及99MB的 窗口移动的图像数是3000。所以我将图像预加载为 平均图像大小为10KB-320x180,因此达到35MB,小于99MB。 当快速循环工作时,许多图像是(来自)和(来自),但在几个快速循环之后,3个图像冻结或变得非常慢。此时

  • 4.使用自定义适配器在ListView中显示图像。 我只是对步骤1和2有问题。我可以从服务器获取新闻,并在我的ListView中显示它们 并通过在我的适配器中添加以下代码显示缓存中的图像:

  • 我有一个从服务器加载映像的项目。我这样用毕加索, 多谢了。

  • 我可以使用Picasso库从文件系统加载图像吗? 我正在使用让用户从他的图库中选择一张照片,然后想要显示所选图像。 我已经有了获取图像文件系统Uri的工作代码,但无法获取毕加索。load()方法工作。