求RGB565的byte数组 组成图片的java代码或算法 public void onPreviewFrame(byte[] data, Camera camera)从摄像头获得的是byte[]数组的RGB565编码数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 得到的一个RGB565的byte数组,怎么转成图片啊 public static Bitmap createBitmap (int[] colors, int offset, int stride, int width, int height, Bitmap.Config config) config选RGB_565 for (int i = 0; i < 153600; i += 2) { tmpData = (int) (rgbBuf[i + 1] & 0xff) << 8; nextData = (int) (rgbBuf[i] & 0xff); sum = tmpData + nextData; sum = (sum & 0xffc0) >> 1 | ((char) (sum & 0x001f)); tmp = intToWord(sum); data[i] = tmp[0]; data[i + 1] = tmp[1]; } public static byte[] convertRgb2Bmp(byte[] rgbBuf, byte[] header) throws Exception { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { bos.write(header); for (int i = 0; i < 153600; i += 2) { tmpData = (int) (rgbBuf[i + 1] & 0xff) << 8; nextData = (int) (rgbBuf[i] & 0xff); sum = tmpData + nextData; sum = (sum & 0xffc0) >> 1 | ((char) (sum & 0x001f)); tmp = intToWord(sum); data[i] = tmp[0]; data[i + 1] = tmp[1]; } bos.write(data); bos.flush(); } catch (Exception ex) { ex.printStackTrace(); throw ex; } finally { bos.close(); } return bos.toByteArray(); } public static byte[] formatBMPHeader() throws Exception { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { bos.write(new byte[] { 'B', 'M' }); // bos.write(intToDWord(width * height * 2 + 0x36)); bos.write(intToDWord(320 * 240 * 2 + 0x36)); bos.write(intToDWord(0)); bos.write(intToDWord(0x36)); bos.write(intToDWord(0x28)); // bos.write(intToDWord(width)); // bos.write(intToDWord(height)); bos.write(intToDWord(320)); bos.write(intToDWord(240)); bos.write(intToWord(1)); bos.write(intToWord(16)); bos.write(intToDWord(0)); bos.write(intToDWord(0)); bos.write(intToDWord(0)); bos.write(intToDWord(0)); bos.write(intToDWord(0)); bos.write(intToDWord(0)); } catch (Exception ex) { ex.printStackTrace(); throw ex; } finally { bos.close(); } return bos.toByteArray(); } 帮忙看看 android 如何隐藏请求地址 如何用蓝牙socket同时传输文字和图片 android 电量使用列表中显示的总和超过100% android 监控网络 ,有网上传数据,没有网络暂存本地。 如何做通用版 edittext Android 視訊 RTSP URL 为什么使用AsyncTask可以解决UI主线程阻塞的问题? socket 电脑和真机连接不上 新人求助两个个问题 关于android开发。。。。求高手指点下 No target available
config选RGB_565
for (int i = 0; i < 153600; i += 2) {
tmpData = (int) (rgbBuf[i + 1] & 0xff) << 8;
nextData = (int) (rgbBuf[i] & 0xff);
sum = tmpData + nextData;
sum = (sum & 0xffc0) >> 1 | ((char) (sum & 0x001f));
tmp = intToWord(sum);
data[i] = tmp[0];
data[i + 1] = tmp[1];
}
public static byte[] convertRgb2Bmp(byte[] rgbBuf, byte[] header)
throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
bos.write(header);
for (int i = 0; i < 153600; i += 2) {
tmpData = (int) (rgbBuf[i + 1] & 0xff) << 8;
nextData = (int) (rgbBuf[i] & 0xff);
sum = tmpData + nextData;
sum = (sum & 0xffc0) >> 1 | ((char) (sum & 0x001f));
tmp = intToWord(sum);
data[i] = tmp[0];
data[i + 1] = tmp[1];
}
bos.write(data);
bos.flush();
} catch (Exception ex) {
ex.printStackTrace();
throw ex;
} finally {
bos.close();
}
return bos.toByteArray();
} public static byte[] formatBMPHeader() throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
bos.write(new byte[] { 'B', 'M' });
// bos.write(intToDWord(width * height * 2 + 0x36));
bos.write(intToDWord(320 * 240 * 2 + 0x36));
bos.write(intToDWord(0));
bos.write(intToDWord(0x36));
bos.write(intToDWord(0x28));
// bos.write(intToDWord(width));
// bos.write(intToDWord(height));
bos.write(intToDWord(320));
bos.write(intToDWord(240));
bos.write(intToWord(1));
bos.write(intToWord(16));
bos.write(intToDWord(0));
bos.write(intToDWord(0));
bos.write(intToDWord(0));
bos.write(intToDWord(0));
bos.write(intToDWord(0));
bos.write(intToDWord(0));
} catch (Exception ex) {
ex.printStackTrace();
throw ex;
} finally {
bos.close();
}
return bos.toByteArray();
}