我正在使用Glide库上传图像。在我的另一个应用程序中,我使用此代码
void imageButtonclick() {
iv1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CropImage.activity(filePath).setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1,1).setOutputCompressQuality(50).start(UploadBook.this);
// Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//intent.putExtra(MediaStore.EXTRA_OUTPUT,imageuri);
//startActivityForResult(intent, CAMERA_REQUEST_CODE);
}
});
通过声明.setOutputCompressQuality(50)
来减小图像的大小,但是我不知道如何使用Glide Image库做同样的事情。
我的代码是
public static void loadLocalImage(Context ctx, RequestOptions glideRequests, Uri uri, ImageView imageView,
RequestListener listener) {
glideRequests.fitCenter()
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE);
Glide.with(ctx)
.applyDefaultRequestOptions(glideRequests.placeholder(R.drawable.ic_stub).error(R.drawable.ic_stub))
.asBitmap()
.load(uri)
.listener(listener)
.into(imageView);
}
答案 0 :(得分:3)
默认情况下,Glide更喜欢RGB_565,因为它仅需要两个字节 每个像素(16位),因此只有 更高的质量和系统默认值ARGB_8888。
因此您不能再降低位图的质量,但是还有其他选择。
选项1 :使用override(x, y)
调整图像大小。
RequestOptions myOptions = new RequestOptions()
.override(100, 100);
Glide.with(fragment)
.asBitmap()
.apply(myOptions)
.load(url)
.into(bitmapView);
选项2 :使用centerCrop
或fitCenter
centerCrop()是一种裁剪技术,可缩放图像以使其 填充ImageView的请求范围,然后裁剪多余的内容。 ImageView将被完全填充,但是整个图像可能 不显示。
RequestOptions myOptions = new RequestOptions()
.centerCrop();
Glide.with(ctx)
.asBitmap()
.apply(myOptions)
.load(url)
.into(bitmapView);
fitCenter()是一种裁剪技术,可缩放图像,以使两者 尺寸等于或小于所要求的范围 ImageView。图像将完全显示,但可能无法填满 整个ImageView。
RequestOptions myOptions = new RequestOptions()
.fitCenter();
Glide.with(ctx)
.asBitmap()
.apply(myOptions)
.load(url)
.into(bitmapView);
选项3 :混合使用这两种解决方案
RequestOptions myOptions = new RequestOptions()
.fitCenter() // or centerCrop
.override(100, 100);
Glide.with(ctx)
.asBitmap()
.apply(myOptions)
.load(url)
.into(bitmapView);
答案 1 :(得分:1)
尝试一下
Glide
.with(ctx)
.load(url)
.apply(new RequestOptions().override(600, 200))
.into(imageView);
答案 2 :(得分:0)
为此,我的解决方案使用Kotlin的扩展功能。使用图像的宽度和高度可以提高效率。在某些情况下,您可能需要在宽度和高度上添加一个乘数以提高质量。
fun ImageView.loadImage(uri: String) {
this.post {
val myOptions = RequestOptions()
.override(this.width, this.height)
.centerCrop()
Glide
.with(this.context)
.load(uri)
.apply(myOptions)
.into(this)
}
}