Android中如何将Bitmap byte裸数据转换成Bitmap图片int数据
我们在JNI中处理得到的BMP图片Raw数据,我们应该如何转换为Bitmap呢?
由于得到的数据是unsigned char *类型的数据,而对于Bitmap的类来说,其类方法里面:
|
1
2
|
public static Bitmap createBitmap(int colors[], int offset, int stride, int width, int height, Config config) |
要求传入的是int *数据,这里我们就需要将unsigned char *数据转换为RGB的int值了。
java里面的方法可以采取如下代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
public static int convertByteToInt(byte data){ int heightBit = (int) ((data>>4) & 0x0F); int lowBit = (int) (0x0F & data); return heightBit * 16 + lowBit; } public static int[] convertByteToColor(byte[] data){ int size = data.length; if (size == 0){ return null; } int arg = 0; if (size % 3 != 0){ arg = 1; } int []color = new int[size / 3 + arg]; int red, green, blue; if (arg == 0){ for(int i = 0; i < color.length; ++i){ red = convertByteToInt(data[i * 3]); green = convertByteToInt(data[i * 3 + 1]); blue = convertByteToInt(data[i * 3 + 2]); color[i] = (red << 16) | (green << 8) | blue | 0xFF000000; } }else{ for(int i = 0; i < color.length - 1; ++i){ red = convertByteToInt(data[i * 3]); green = convertByteToInt(data[i * 3 + 1]); blue = convertByteToInt(data[i * 3 + 2]); color[i] = (red << 16) | (green << 8) | blue | 0xFF000000; } color[color.length - 1] = 0xFF000000; } return color; } Bitmap decodeFrameToBitmap(byte[] frame) { int []colors = convertByteToColor(frame); if (colors == null){ return null; } Bitmap bmp = Bitmap.createBitmap(colors, 0, 1280, 1280, 720,Bitmap.Config.ARGB_8888); return bmp; } |
代码不解释,有问题博客提一下,会解答。
-END-
Android中如何将Bitmap byte裸数据转换成Bitmap图片int数据的更多相关文章
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
- 将undefault和null的数据转换成bool类型的数据 使用!!
<script> var o={}; var a=null; console.info(!!o.name); </script> 输出false 此方法是将undefault和 ...
- C# byte数组转成Bitmap对象
方法一: /// <summary> /// 将数组转换成彩色图片 /// </summary> /// <param name="rawValues" ...
- 省市县从数据库读出来的list数据转换成json格式的数据
一,数据源 1.1,数据库查出来的数据是 两张表先各自左外连接,然后在相互左外连接查找省市县的数据(业务需求必须这样做,省市去的是第一张表,而市县取的是第二张表,两张表中间通过市的名字连接)见这个博文 ...
- python将json格式的数据转换成文本格式的数据或sql文件
python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql文件? 下面的例子是将json格式的数据准换成以#_#分割的文本数据,也可用于生成sql文件. [root@bogon ...
- 《Android源代码设计模式解析》读书笔记——Android中你应该知道的设计模式
断断续续的,<Android源代码设计模式解析>也看了一遍.书中提到了非常多的设计模式.可是有部分在开发中见到的几率非常小,所以掌握不了也没有太大影响. 我认为这本书的最大价值有两点,一个 ...
- Android中你应该知道的设计模式
建造者模式 建造者模式最明显的标志就是Build类,而在Android中最常用的就是Dialog的构建,Notification的构建也是标准的建造者模式. 建造者模式很好理解,如果一个类的构造需要很 ...
- MD5+DES在C#.NET与Java/Android中的加解密使用
一.背景后台(C#.NET)使用一个MD5+DES的加解密算法,查了下,很多网友都使用了这个算法.在Android里,也需要这个算法,如何把这个加解密算法切换成Java版,成了难题.毕竟好久没涉及到这 ...
- android中常见的设计模式有哪些?
建造者模式 建造者模式最明显的标志就是Build类,而在Android中最常用的就是Dialog的构建,Notification的构建也是标准的建造者模式. 建造者模式很好理解,如果一个类的构造需要很 ...
随机推荐
- ios中判断当前手机的网络状态
typedef enum { NETWORK_TYPE_NONE= 0, NETWORK_TYPE_2G= 1, NETWORK_TYPE_3G= 2, NETWORK_TYP ...
- uilabel 复制
//添加一个长按响应方法 - (void)addLongPressGestureRecognizer { UILongPressGestureRecognizer * longPress = [[UI ...
- MS13-069(CVE-2013-3205) CCaret use-after-free Vulnerability Analysis (2014.9)
MS13-069(CVE-2013-3205) CCaret use-after-free Vulnerability Analysis 1. Introduction In IE's standar ...
- 用yum安装JDK(CentOS)
1.查看yum库中都有哪些jdk版本 [root@localhost ~]# yum search java|grep jdk 2.选择版本,进行安装 [root@localhost ~]# yum ...
- bootsraps ch1
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- KNN算法的补充
文本自动分类技术是文字管理的基础.通过快速.准确的文本自动分类,可以节省大量的人力财力:提高工作效率:让用户快速获得所需资源,改善用户体验.本文着重对KNN文本分类算法进行介绍并提出改进方法. 一.相 ...
- VBS基础篇 - 循环语句(3) - For...Next
VBS基础篇 - 循环语句(3) - For...Next 指定循环次数,使用计数器重复运行语句,语法结构如下: 1 2 3 4 5 For counter = start To end [Ste ...
- Chapter 2 Open Book——21
I kept my head down and glanced up under my lashes. 我一直保持低着头并且在睫毛之下瞟了一眼. None of them were looking t ...
- 【Machine Learning in Action --2】K-近邻算法改进约会网站的配对效果
摘自:<机器学习实战>,用python编写的(需要matplotlib和numpy库) 海伦一直使用在线约会网站寻找合适自己的约会对象.尽管约会网站会推荐不同的人选,但她没有从中找到喜欢的 ...
- 去掉uitableveiw多余的分割线
UIView *v = [[UIView alloc] initWithFrame:CGRectZero]; [_tableView setTableFooterView:v];