前几天公司的产品要求做个手机拍的照片转深度为32位,格式为.bmp格式的图片,仔细研究了下,通过调系统相机根据照片存的路径以及FileInputStream获得照片的bitmap,拿到这个bitmap后把数据放到下面的方法里,可获取bmp格式的图片,深度为32位的。

/** * 将Bitmap存为 .bmp格式图片 * @param bitmap */  public void saveBmp(Bitmap bitmap,long name) {  if (bitmap == null)  return;  // 位图大小  int nBmpWidth = bitmap.getWidth();  int nBmpHeight = bitmap.getHeight();  // 图像数据大小  // int bufferSize = nBmpHeight * (nBmpWidth * 3 + nBmpWidth % 4);  int bufferSize = nBmpHeight * (nBmpWidth * 4 + nBmpWidth % 5);try {  // 存储文件名  // String filename = savePhoto();  String filename =  savePicturePath("HanvonDataBmp");File file = new File(filename);  if (!file.exists()) {  file.createNewFile();  }  FileOutputStream fileos = new FileOutputStream(filename);  // bmp文件头  int bfType = 0x4d42;  long bfSize = 14 + 40 + bufferSize;  int bfReserved1 = 0;  int bfReserved2 = 0;  long bfOffBits = 14 + 40;  // 保存bmp文件头  writeWord(fileos, bfType);  writeDword(fileos, bfSize);  writeWord(fileos, bfReserved1);  writeWord(fileos, bfReserved2);  writeDword(fileos, bfOffBits);  // bmp信息头  long biSize = 40L;  long biWidth = nBmpWidth;  long biHeight = nBmpHeight;  int biPlanes = 1;  // int biBitCount = 24;  int biBitCount = 32;long biCompression = 0L;  long biSizeImage = 0L;  long biXpelsPerMeter = 0L;  long biYPelsPerMeter = 0L;  long biClrUsed = 0L;  long biClrImportant = 0L;  // 保存bmp信息头  writeDword(fileos, biSize);  writeLong(fileos, biWidth);  writeLong(fileos, biHeight);  writeWord(fileos, biPlanes);  writeWord(fileos, biBitCount);  writeDword(fileos, biCompression);  writeDword(fileos, biSizeImage);  writeLong(fileos, biXpelsPerMeter);  writeLong(fileos, biYPelsPerMeter);  writeDword(fileos, biClrUsed);  writeDword(fileos, biClrImportant);  // 像素扫描  byte bmpData[] = new byte[bufferSize];  //int wWidth = (nBmpWidth * 3 + nBmpWidth % 4);  int wWidth = (nBmpWidth * 4 + nBmpWidth % 5);for (int nCol = 0, nRealCol = nBmpHeight - 1; nCol < nBmpHeight; ++nCol, --nRealCol)  for (int wRow = 0, wByteIdex = 0; wRow < nBmpWidth; wRow++, wByteIdex += 4) {  int clr = bitmap.getPixel(wRow, nCol);  bmpData[nRealCol * wWidth + wByteIdex] = (byte) Color.blue(clr);  bmpData[nRealCol * wWidth + wByteIdex + 1] = (byte) Color.green(clr);  bmpData[nRealCol * wWidth + wByteIdex + 2] = (byte) Color.red(clr); bmpData[nRealCol * wWidth + wByteIdex+3] = (byte) Color.alpha(0xff);}  fileos.write(bmpData);  fileos.flush();  fileos.close();  } catch (FileNotFoundException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  }  protected void writeWord(FileOutputStream stream, int value) throws IOException {  byte[] b = new byte[2];  b[0] = (byte) (value & 0xff);  b[1] = (byte) (value >> 8 & 0xff);  stream.write(b);  }  protected void writeDword(FileOutputStream stream, long value) throws IOException {  byte[] b = new byte[4];  b[0] = (byte) (value & 0xff);  b[1] = (byte) (value >> 8 & 0xff);  b[2] = (byte) (value >> 16 & 0xff);  b[3] = (byte) (value >> 24 & 0xff);  stream.write(b);  }  protected void writeLong(FileOutputStream stream, long value) throws IOException {  byte[] b = new byte[4];  b[0] = (byte) (value & 0xff);  b[1] = (byte) (value >> 8 & 0xff);  b[2] = (byte) (value >> 16 & 0xff);  b[3] = (byte) (value >> 24 & 0xff);  stream.write(b);  }

这是一个工具方法,可直接把图片的bitmap放入里面,方法里面的第二个参数name是保存bmp格式图片的名字,savePicturePath(”photoName”)为bmp格式图片保存路径。

public String savePicturePath(String photoName) {String mFilePath = Environment.getExternalStorageDirectory().getPath();// 获取SD卡路径String fpath = "";File file = new File(mFilePath + File.separatorChar + photoName);if (!file.exists()) {file.mkdirs();}fpath = mFilePath + File.separatorChar + File.separatorChar + photoName;file = new File(fpath);if (!file.exists()) {file.mkdirs();}long picName = System.currentTimeMillis();String PicturePath = fpath + File.separatorChar + picName + ".png";file = null;return PicturePath;
}

Android如何把图片转为深度为32位格式为.bmp的图片相关推荐

  1. 修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位

    修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位 文章目录 修改开机LOGO图片教程及注意事项/通过C++实现bmp图位深度从32位转换为8位 修改开机LOGO图片教 ...

  2. S37文件解析(Motorola S/EXORciser/EXORmacs/32位格式)

    /// <summary>     /// Motorola S/EXORciser/EXORmacs/32位格式  S-Record     /// 解析  EXORciser-S19 ...

  3. 【Android 逆向】IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )

    文章目录 一.IDA 32 位 / 64 位 版本 二.汇编代码视图 IDA View-A 三.字符串窗口 Strings window 一.IDA 32 位 / 64 位 版本 IDA 安装完毕后 ...

  4. OpenCV - 将图片转换为深度学习模型输入格式,BGR通道转RGB,图片归一化,HWC转CHW

    文章目录 1 将图片转换为深度模型输入格式 1.1 自行进行转换 1.1.1 BGR通道转RGB通道 1.1.2 图片归一化 1.1.3 HWC转CHW 1.2 使用cv::dnn::blobFrom ...

  5. 图片打不开怎么转换格式?怎么修改图片的格式?

    很多小伙伴问有没有好用的图片格式转换软件(万能在线图片格式转换器(jpg.png.gif.webp.bmp.jp2.tiff)-压缩图),在这里推荐压缩图的图片格式转换功能,不用下载安装,在线格式转换 ...

  6. 设置图片格式为php,php 将bmp图片转为jpg等其他任意格式的图片

    php // 例子: $path = root . ' upload/2009/06/03/124401282315771. ' ; $pathall = $path . ' bmp ' ; $mi ...

  7. linux32系统下载地址,deepin 15.3 32位ISO下载地址,深度系统最后支持32位的版本

    目前深度操作系统deepin新版本仅提供amd64的ISO下载,从deepin 15.4就不再发布32位版本了,也就是说deepin 15.3是最后支持32位的版本,这个版本提供有deepin-15. ...

  8. 电脑将图片转为excel表格的几种常用方法

    一.用金鸣表格文字识别在线网页版: 1.打开金鸣表格文字识别(简称金鸣识别)网站. 2.点击"点此添加图片/PDF",将待识别的门脸图片添加进去. 3.点击"提交识别&q ...

  9. 【IEEE754制32位浮点数】与十进制相互转换

    IEEE754制32位浮点数转换为十进制 首先了解一下IEEE754制32位浮点数的存储方式 一个由IEEE745制的32位浮点数由三部分组成 组成部分 位数 含义 符号位 1位 0为正,1为负 指数 ...

最新文章

  1. 如何打造一流的视觉AI技术
  2. 图(Graph)的javascript实现
  3. 只有当前用户或管理员能登录到此计算机,当前登录的用户没有管理员权限。请重新以管理员身份登录,或与您的pc管理员联系。...
  4. 修改Static控件的字体颜色
  5. 两个tplink路由器有线桥接_tplink和腾达路由器有线桥接设置图解
  6. 对基于消息队列的Activiti异步执行器进行基准测试
  7. php 自带缓存,封装ThinkPhP自带的缓存机制
  8. 外设驱动库开发笔记24:FM24xxx系列FRAM存储器驱动
  9. 基克的聚合 机器人_重做秒变神器!基克的聚合成辅助标配
  10. Java 8 Stream 流用法及语法
  11. php 年月日 中文,php Date()函数输出中文年月日时分秒_PHP教程
  12. (王道408考研数据结构)第五章树-第三节4:树与二叉树的转换
  13. web api 开发记录
  14. Linq To Sql, 为何继承就这么费劲?
  15. Python办公自动化(一):从Word到Excel
  16. stm32定时器编码器模式原理及配置
  17. 不用找,你想要的餐饮酒店word模板素材都在这里
  18. 深入浅出mysql第二,mysql-深入浅出MySQL(第2版)-ITBook分享(pdf mongodb java javascript node )...
  19. Principle 5.14 完美汉化版 Mac平台交互动效设计神器
  20. Django 学习 Blog 实操 19 --- 统计分类、标签云下的文章数目

热门文章

  1. 信用风险评分模型开发流程
  2. 关于View.VISIBLE、INVISIBLE、GONE区别
  3. C#的中stopwatch的简单应用
  4. apache2+php5+mysql5+pureftp+ftp管理
  5. 中国智能手机保有量已超9亿
  6. 服务计算--简单 web 服务与客户端开发实战
  7. 迷茫了3年:做完这个测试项目,我终于决定辞职
  8. 二维Gabor 滤波加速
  9. TCP协议——三次握手与四次挥手
  10. 中级职称计算机哪几门简单,中级职称计算机选哪些科目