小编典典

如何使用 glide 将图像下载到位图中?

all

使用 Glide将 URL 下载到一个ImageView非常容易:

Glide
   .with(context)
   .load(getIntent().getData())
   .placeholder(R.drawable.ic_loading)
   .centerCrop()
   .into(imageView);

我想知道我是否可以下载到一个Bitmap以及?我想下载一个原始位图,然后我可以使用其他工具进行操作。我已经浏览了代码,但不知道该怎么做。


阅读 73

收藏
2022-08-03

共1个答案

小编典典

确保您使用的是最新版本

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

科特林:

Glide.with(this)
        .asBitmap()
        .load(imagePath)
        .into(object : CustomTarget<Bitmap>(){
            override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                imageView.setImageBitmap(resource)
            }
            override fun onLoadCleared(placeholder: Drawable?) {
                // this is called when imageView is cleared on lifecycle call or for
                // some other reason.
                // if you are referencing the bitmap somewhere else too other than this imageView
                // clear it here as you can no longer have the bitmap
            }
        })

位图大小:

如果要使用图像的原始大小,请使用上述默认构造函数,否则您可以将所需大小传递给位图

into(object : CustomTarget<Bitmap>(1980, 1080)

爪哇:

Glide.with(this)
        .asBitmap()
        .load(path)
        .into(new CustomTarget<Bitmap>() {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                imageView.setImageBitmap(resource);
            }

            @Override
            public void onLoadCleared(@Nullable Drawable placeholder) {
            }
        });

老答案:

compile 'com.github.bumptech.glide:glide:4.8.0'及低于

Glide.with(this)
        .asBitmap()
        .load(path)
        .into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
                imageView.setImageBitmap(resource);
            }
        });

对于compile 'com.github.bumptech.glide:glide:3.7.0'及以下

Glide.with(this)
        .load(path)
        .asBitmap()
        .into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                imageView.setImageBitmap(resource);
            }
        });

现在您可能会看到警告SimpleTarget is deprecated

原因:

弃用 SimpleTarget 的主要目的是警告您它诱使您破坏 Glide 的 API 契约的方式。具体来说,一旦 SimpleTarget
被清除,它不会强制您停止使用已加载的任何资源,这可能会导致崩溃和图形损坏。

SimpleTarget只要您确保在清除 imageView 后不使用位图,仍然可以使用。

2022-08-03