android 读取RAW中的bmp图片为RGB类型byte数组
时间: 2024-12-16 21:28:44 浏览: 4
读取Java文件到byte数组的三种方法(总结)
在Android中,如果你想要从raw资源文件(通常存储在res/raw目录下的.bmp格式图片)读取并转换为RGB类型的字节数组,可以按照以下步骤操作:
1. 首先,获取到原始的Bitmap对象。你可以通过`Resources`类加载raw资源,然后调用`getIdentifier()`方法找到对应的资源ID。
```java
Resources resources = getApplicationContext().getResources();
int resourceId = resources.getIdentifier("image_resource_name", "drawable", yourPackageName);
InputStream is = resources.openRawResource(resourceId);
```
替换"image_resource_name"为你实际的资源名,yourPackageName为你的包名。
2. 使用` BitmapFactory`来解析这个输入流,并创建Bitmap对象。
```java
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; // 只检查尺寸,不加载像素数据
BitmapFactory.decodeStream(is, null, options);
// 计算实际需要的大小
int requiredWidth = options.outWidth;
int requiredHeight = options.outHeight;
options.inJustDecodeBounds = false; // 开始解码
options.inPurgeable = true; // 预加载缓存
options.inInputShareable = true; // 允许其他线程共享这块内存
ByteArrayOutputStream baos = new ByteArrayOutputStream();
is = resources.openRawResource(resourceId);
Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); // 压缩为JPEG格式
byte[] data = baos.toByteArray(); // 得到字节数组
// 现在data就是你需要的RGB类型的字节数组
```
阅读全文