通过覆盖调整滑动大小调整图像不会调整图像大小

时间:2016-01-11 11:30:32

标签: android android-glide

我使用 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 个答案:

答案 0 :(得分:1)

我刚刚遇到这个错误。我的解决方案是像这样设置imageview:

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

答案 1 :(得分:1)

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 :(得分:0)

我刚刚遇到了同样的情况。我认为这是Glide的一个错误。 因此,您必须自己调整位图大小,如下所示:

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调整图像大小的方式。

答案 3 :(得分: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()