java - Android - 在加载到 ImageView 之前调整图像大小以避免 OOM 问题
问题描述
从图库/照片中选择后,如何减小 imageview 上的图像大小?否则选择的大图像会导致 OOM 问题。
选择意图
SelectImageGallery1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Image1 From Gallery"), 1);
}
}
设置为 ImageView:
{
Uri uri = I.getData();
try {
bitmap1 = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
imageView1.setImageBitmap(bitmap1);
} catch (IOException e) {
e.printStackTrace();
}
}
解决方案
对于将来可能需要它的人,我终于使用 glide 解决了它,如下所示。选择意图
SelectImageGallery1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Image1 From Gallery"), 1);
}
}
使用 Glide 将图像设置为 Imageview
@Override
protected void onActivityResult(int RC, int RQC, Intent I) {
super.onActivityResult(RC, RQC, I);
if (RC == 1 && RQC == RESULT_OK && I != null && I.getData() != null) {
Uri uri = I.getData();
RequestOptions options = new RequestOptions()
.format(DecodeFormat.PREFER_RGB_565)
.placeholder(R.drawable.ic_launcher_background)
.error(R.drawable.ic_launcher_background);
Glide.with(this)
.setDefaultRequestOptions(options)
.asBitmap()
.load(uri)
.centerInside()
.into(new CustomTarget<Bitmap>(512, 512) {
@Override
public void onResourceReady(@NonNull Bitmap bitmap1, @Nullable Transition<? super Bitmap> transition) {
imageView1.setImageBitmap(bitmap1);
MainActivity.this.bitmap1 = bitmap1;
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}
推荐阅读
- ios - XCTest - 尝试在 WKWebView 中记录元素时 Xcode 崩溃
- json - 将 JSON 上传到 IBM Watson Discovery 时出错
- c# - 如何为用户控件创建 textchange 事件
- c# - 如何使用 CsvHelper 创建列标题?
- multithreading - 是否有任何理由锁定队列?
- vba - 在 VBA 中将项目添加到后期绑定的 SortedList
- linux - 找出导致机器重启的原因
- python - raspbian 拉伸上的 CMake 安装问题
- asp.net-mvc - 如何在 ASP.NET MVC Core 2 中禁用防伪令牌检查
- angular - 当接口的属性名称有下划线时,智能感知不起作用