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的构建也是标准的建造者模式. 建造者模式很好理解,如果一个类的构造需要很 ...
 
随机推荐
- Andorid第三方库
			
博客: http://blog.csdn.net/codywangziham01/article/details/11818559#t8 RoboGuice: http://www.importnew ...
 - From windows live writer
			
天线数据长度: 4*14*9664*4 = 2164736 信道估计长度: 614400 均衡: 12*1200*4 = 57600
 - TortoiseGit - pull request
			
有一个仓库,叫Repo A.你如果要往里贡献代码,首先要Fork这个Repo,于是在你的Github账号下有了一个Repo A2,.然后你在这个A2下工作,Commit,push等.然后你希望原始仓库 ...
 - 关于如何用Jquery监听鼠标滚轮改变横向滚动条
			
$(function(){ if ((navigator.userAgent.indexOf('MSIE') >= 0)){/*判断是否是IE浏览器*/ var scroll_width = 1 ...
 - C++著名程序库的比较和学习经验(STL.Boost.GUI.XML.网络等等)
			
1.C++各大有名库的介绍--C++标准库 2.C++各大有名库的介绍--准标准库Boost 3.C++各大有名库的介绍--GUI 4.C++各大有名库的介绍--网络通信 5.C++各大有名库的介绍- ...
 - JSON.parse()和JSON.stringify()&&traditional(ajax请求)的作用
			
parse是一个字符串中解析出json对象,如 var str = '{"name":"haizeiwang"}' 结果: JSON.parse(str) na ...
 - iOS自定义转场动画的实现
			
iOS中熟悉的是导航栏中的push和pop这两种动画效果,在这里我们可以自己实现自己想要的一些转场动画 下面是我自己创建转场动画的过程 1.新建一个文件继承自NSObject ,遵循协议UIViewC ...
 - onbeforeunload与a标签在IE中的冲突bug(转载)
			
onbeforeunload与a标签在IE中的冲突bug onbeforeunload 是window的一个事件,目前Firefox,IE都支持,主要用来提示用户是否真的要离开该页面,通常在一些比 ...
 - js iframe跨域访问
			
1.什么是跨域? 2.前台解决跨域几种方法 2.1 动态创建script 2.2 使用document.domain 2.3使用HTML5新属性postMessage 2.4 利用iframe和loc ...
 - Flask -- 内容管理系统
			
例子: # content_manager.py # 把TOPIC存在一个字典里,key为关键字,value为二维数组# TOPIC_DICT['Django'][0]为Title,TOPIC_DIC ...