【问题标题】:Glide resizing image via override does not resize the image通过覆盖滑动调整图像大小不会调整图像大小
【发布时间】:2021-05-24 21:17:47
【问题描述】:

我正在使用 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 等。

这是否意味着,覆盖方法的值是调整大小的基线,而不是要使用的实际尺寸?

【问题讨论】:

    标签: android android-glide


    【解决方案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】:

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

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

      它有效。

      【讨论】:

      • 你也需要像这样调整图像视图的大小。
      【解决方案3】:

      我刚刚遇到了同样的情况。我认为这是 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调整图像大小的方式。

      【讨论】:

      • “resize()”从何而来?
      【解决方案4】:

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

       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()

      【讨论】:

        猜你喜欢
        • 2013-07-04
        • 2012-12-18
        • 2019-06-17
        • 1970-01-01
        • 1970-01-01
        • 2011-02-18
        • 2010-11-20
        • 1970-01-01
        相关资源
        最近更新 更多