我使用 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等。
这是否意味着,覆盖方法的值是调整大小的基线而不是要使用的实际维度?
答案 0 :(得分:1)
我刚刚遇到这个错误。我的解决方案是像这样设置imageview:
Glide.with(context).load(path).centerCrop().crossFade().into(imageview);
它有效。
答案 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()