Android 从文件读取图片转换为bitmap
时间: 2023-05-25 18:03:17 浏览: 1321
Android读取本地或网络图片并转换为Bitmap
可以使用以下代码从文件中读取图片并转换为 Bitmap:
```java
String imagePath = "/sdcard/image.jpg"; // 文件路径
Bitmap bitmap = BitmapFactory.decodeFile(imagePath); // 从文件中读取 Bitmap
```
上述代码中,`imagePath` 是文件路径,因为 Android 系统的文件路径是以 `/` 开头的,所以需要指定完整路径,例如 `/sdcard/image.jpg`。用 `BitmapFactory.decodeFile()` 方法从文件中读取图片并转换为 Bitmap 对象。最终,你得到一个 Bitmap 对象,可以将其用于显示或用于其他处理。
如果图片文件过大,可能会导致内存不足异常,因此建议在处理图片时使用缩小图片的方法来避免该问题。以下代码展示了如何通过指定缩放比例从文件中读取并转换图片:
```java
String imagePath = "/sdcard/image.jpg"; // 文件路径
// 读取原始图片大小
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imagePath, options);
// 计算缩小比例
int reqWidth = 200; // 要求的宽度
int reqHeight = 200; // 要求的高度
int width = options.outWidth;
int height = options.outHeight;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
int halfHeight = height / 2;
int halfWidth = width / 2;
while ((halfHeight / inSampleSize) >= reqHeight
&& (halfWidth / inSampleSize) >= reqWidth) {
inSampleSize *= 2;
}
}
// 读取缩小后的图片
options.inJustDecodeBounds = false;
options.inSampleSize = inSampleSize;
Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options);
```
在上述代码中,`reqWidth` 和 `reqHeight` 分别是要求的宽度和高度,可以根据业务需求调整。通过 `BitmapFactory.Options()` 构造一个 Options 对象, `inJustDecodeBounds` 设置为 `true`,调用 `BitmapFactory.decodeFile()` 方法获取图片的原始大小。然后,通过计算出缩放比例 `inSampleSize`,再调用 `BitmapFactory.decodeFile()` 方法获取缩放后的 Bitmap 对象。
阅读全文