通过override调整Glide图片大小不会改变图片大小

10
我将使用Glide来下载和显示图片,但是当我尝试调整图片大小时,它并没有起作用。我得到的是随机大小(或者可能是图片的实际大小)。
以下是我用于通过Glide加载的代码:
Glide.with(context)
     .load(file.getUrl())
     .asBitmap()
     .diskCacheStrategy(DiskCacheStrategy.ALL)
     .centerCrop()
     .transform(new CropCircleTransform(context))
     .override(dimen, dimen)
     .into(new SimpleTarget<Bitmap>() {
        @Override
        public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
          bitmap = resource;

          Log.info(resource.getWidth() + "x" + resource.getHeight());
        }
      });
CropCircleTransform仅将位图渲染成圆形并中心裁剪。我尝试删除它以测试是否此方法导致问题,但仍然无法将图像调整为我指定的尺寸。我的代码有问题吗?还是我误解了覆盖方法?
编辑:尝试删除重写,似乎已经以大尺寸加载了图像,这意味着在使用重写时实际上发生了调整大小。
但是,为什么它没有调整到我指定的实际值呢?
作为样本,dimen的值为96,但是日志中显示的图像尺寸如97x97、117x117、154x154等。
这是否意味着覆盖方法的值是调整大小的基准,而不是要使用的实际尺寸?
4个回答

4
ImageView iv = (ImageView) findViewById(R.id.left);

int width = 60;
int height = 60;

LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(parms);

Glide.with(context).load(path).centerCrop().crossFade().into(iv);

2

我刚遇到了这个错误。我的解决方案是按照以下方式设置imageview:

  1. 在xml文件中设置您的imageview大小。
  2. Glide.with(context).load(path).centerCrop().crossFade().into(imageview);

这将有效果。


你需要将ImageView调整为这样的大小。 - Leito

0

我知道这个问题很老了,但我想发布正确的答案:

 Glide.with(getApplicationContext())
                .asBitmap()
                .load(bitmap)
                .fitCenter()
                .into(new CustomTarget<Bitmap>(1000, 1000) {
                    @Override
                    public void onResourceReady(@NonNull @NotNull Bitmap resource, 
                    }

                    @Override
                    public void onLoadCleared(@Nullable @org.jetbrains.annotations.Nullable Drawable placeholder) {

                    }
                });

不要忘记添加.fitCenter()


0

我刚遇到了同样的情况。我认为这是Glide的一个bug。 因此,你必须像这样自己调整位图大小:

Glide.with(context).load(url).asBitmap().into(new SimpleTarget<Bitmap>{

    @Override
    public void onResourceReady(Bitmap resource,GlideAnimation<? extends Bitmap>(){
           // resize the bitmap
           bitmap = resize(width,height);
           imageView.setImageBitmap(bitmap);
    }

})

顺便提一下,ImageView的scaleType(例如'fitXY'、'centerCrop'、'fitCenter'等)也可能影响Glide调整图像大小的方式。

2
"resize()"来自哪里? - Maxime Claude

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接