Android使用byte数组生成一张灰度图
来源:互联网 发布:遥感影像匀光匀色软件 编辑:程序博客网 时间:2024/05/22 13:24
一、在Java里,保持一张图片使用byte数组,这样在传送数据到网络时就非常的方便。最近组长要我用一个300*400的byte数组,通过一个线程不断改变里面的值,比如让所有的位置上的值从0~255轮转,然后生产一张灰度图。一开始郁闷,怎么做都是彩色的图片,然后我就无语了,研究许久之后,终于知道怎么生产灰度图了。
二、方法
其实原理很简单,不过说实话,我还是不太明白为啥这么写就是灰度图(能力太差。。。),就不会有彩色了,下面直接上代码,下面个类就是通过byte数组生产一张Bitmap图片。
public class BitmapCreateFactroy { /** * Use color create a bitmap * * @param color byte array * @param picw * bitmap width * @param pich * bitmap height * @return Bitmap */ public static Bitmap createBitmap(byte[] values, int picW, int picH) { if(values == null || picW <= 0 || picH <= 0) return null; //使用8位来保存图片 Bitmap bitmap = Bitmap .createBitmap(picW, picH, Config.ARGB_8888); int pixels[] = new int[picW * picH]; for (int i = 0; i < pixels.length; ++i) { //关键代码,生产灰度图 pixels[i] = values[i] * 256 * 256 + values[i] * 256 + values[i] + 0xFF000000; } bitmap.setPixels(pixels, 0, picW, 0, 0, picW, picH); values = null; pixels = null; return bitmap; }}
这样,你就可以定义一个byte数组,然后将里面的值全部初始化或者动态改变每一位上的值(0~255,不过byte的范围没有这么大,强制转化就可以了),生产一张灰度图片。
传入的图片宽高要和byte数组这个矩阵一样,否则图片会生成失败哦!
例如:byte[] pictures = new byte[300 * 400];
BitmapCreateFactroy.createBitmap(pictures,300,400);
这样就得到了Bitmap图片,就可以用于显示,而byte数组则可以发送到网络或者别的地方。
如有错误,感谢指正,谢谢合作。
1 0
- Android使用byte数组生成一张灰度图
- Bitmap转灰度字节数组byte[]
- C#中使用byte[]数据,生成Bitmap(256色 灰度 BMP位图)源代码
- C#中使用byte[]数据,生成Bitmap(256色 灰度 BMP位图)源代码
- C#中使用byte[]数据,生成Bitmap(256色 灰度 BMP位图)源代码
- 使用max生成高度灰度图-heightmap
- Android中byte数组生成文件并保存到手机
- Qt生成灰度图
- Qt生成灰度图
- Qt生成灰度图
- Qt 生成灰度图
- Qt生成灰度图
- python生成灰度图
- 自己填充int数组,生成bitmap,显示一张纯色图。
- C#中将byte数组转换为8bit灰度图像
- C#中将byte数组转换为8bit灰度图像
- CImage图像得到BYTE数组数据 - 8bit灰度图像
- Android-使用tint一张图制作selector
- Linux系统下Apache+OpenSSL源码安装并配置https服务
- 正则表达式常用例子
- ASUS Z-170A 主板锁定 CPU 频率
- 冒泡排序及其优化
- POJ 3660(floyd)
- Android使用byte数组生成一张灰度图
- androidstudio导入youkuPlayerOpenSDK失败解决
- 为什么在定义hashcode时要使用31这个数呢?
- Linux shell命令
- AndroidHttpCapture 网络诊断工具 是一款针对于移动流量劫持而开发的手机抓包软件
- Phone Number 山东省第一届ACM大学生程序设计竞赛(原题) problem A
- java给定日期区间计算其中的周几有几天
- 预报在线:发送短信中,对用户登录的判断和区分一般信息快报和重大信息快报,以选取不同的sql获取不同的用户;
- TextView 显示 html