RGB565 数据 如何 保存为图片

hayvane 发布于 2013/08/09 15:01
阅读 1K+
收藏 0
请问 从摄像头获得的是byte[]数组的RGB565编码数据,怎么转成图片?
加载中
0
TracyZhang
TracyZhang
bitmap.compress()
0
hayvane
hayvane

引用来自“FkingU007”的答案

bitmap.compress()
int tmpColor[] = new int[width*height];
      for(int j=0; j<width*height;j++){
          int tmpint = data[j*2+0]+data[j*2+1]*256;
          int a = 0xff;
          int r = (tmpint & 0xf800) >> 11;
          int g = (tmpint & 0x07e0) >> 5;
          int b = (tmpint & 0x001f);
          
          r  = r << 3;
          g  = g << 2 ;
          b  = b << 3;
          tmpColor[j] = (a << 24) | (r << 16) | (g << 8) | (b);
      }

Bitmap bmp = Bitmap.createBitmap(width, height,
	              Bitmap.Config.ARGB_8888);
	       bmp.setPixels(tmpColor, 0, width, 0, 0, width, height);
	       String bmpName = "t.jpg";
	       String path =  "/scan_test";
	       System.out.println("########### path = " + path);
	        // 文件目录
	       File root = new File(path);
	       if (!root.isDirectory() || !root.exists()) {
	           root.mkdirs();
	       }
	       File myCaptureFile = new File(path, bmpName);
	       try {
	           myCaptureFile.createNewFile();
	       } catch (IOException e1) {
	           // TODO Auto-generated catch block
	           e1.printStackTrace();
	       }
	       try {
	           BufferedOutputStream bos = new BufferedOutputStream(
	                  new FileOutputStream(myCaptureFile));
	           // 采用压缩转档方法
	           bmp.compress(Bitmap.CompressFormat.JPEG, 100, bos);
	           bos.flush();
	           bos.close();
	 
	       } catch (Exception e) {
	           myCaptureFile.delete();	    	   	
	       }

這是保存都代碼,但是保存的圖片偏色偏綠。

0
TracyZhang
TracyZhang
你得到RGB565不用转换这一段代码 直接保存不就得了 其实效果也挺好的  颜色偏绿可能是不同手机屏幕显示效果造成的 比如三星、小米屏幕显示效果都是处理过的
0
hayvane
hayvane

引用来自“FkingU007”的答案

你得到RGB565不用转换这一段代码 直接保存不就得了 其实效果也挺好的  颜色偏绿可能是不同手机屏幕显示效果造成的 比如三星、小米屏幕显示效果都是处理过的
如何直接保存??我得到 RGB565是byte []類型的。我說的偏色不是那種因爲屏幕導致的,準確都說是 已經嚴重失真了。 
返回顶部
顶部