Android bitmap转byte
逆转start协议输出
private static byte[] bitmap2byte(Bitmap bmp) throws Exception{
return bitmap2byte(bmp, null);
}
private static byte[] bitmap2byte(Bitmap bmp, StarReverseConfig config) throws Exception{
Long s = System.currentTimeMillis();
String TAG = "Start Bitmap2byte";
int imgWidth = bmp.getWidth();
int imgHeight = bmp.getHeight();
//头 无配置
byte[] header = { 0x1b, 0x2a, 0x72, 0x42,
0x1b, 0x2a, 0x72, 0x61,
0x1b, 0x2a, 0x72, 0x41 };
//参数 配置 Set print speed : 1B1E74
//0x1b, 0x2a, 0x72, 0x6d, 0x6c, 0x24, 0x00 1b 2a 72 6d 6c n 00; Set raster left margin: n x 8
byte[] params = { };
//0x1b, 0x6c, 0x24 Set raster left margin
//0x1b, 0x1d, 0x41 n1 n2 Point absolute position
//尾 无配置
byte[] footer = { 0x1b, 0x2a, 0x72, 0x65, 0x31, 0x33, 0x00, 0x1b, 0x0c, 0x19, 0x00 };
//Storellet
//byte[] header = {0x1b, 0x2a, 0x72, 0x42, 0x1b, 0x1d, 0x03, 0x04, 0x00, 0x00, 0x17, 0x00, 0x1b, 0x1e, 0x45, 0x00, 0x1b, 0x06, 0x01, 0x00, 0x1b, 0x06, 0x01, 0x00, 0x1b, 0x1d, 0x03, 0x03, 0x00, 0x00, 0x1b, 0x2a, 0x72, 0x41, 0x1b, 0x2a, 0x72, 0x50, 0x30, 0x00, 0x1b, 0x2a, 0x72, 0x45, 0x31, 0x00, 0x1b, 0x2a, 0x72, 0x59, 0x30, 0x30, 0x33, 0x00 };
//Storellet
//byte[] footer = { 0x1b, 0x2a, 0x72, 0x59, 0x30, 0x30, 0x31, 0x00, 0x1b, 0x2a, 0x72, 0x65, 0x31, 0x33, 0x00, 0x1b, 0x0c, 0x19, 0x1b, 0x2a, 0x72, 0x46, 0x31, 0x33, 0x00, 0x1b, 0x0c, 0x00, 0x1b, 0x2a, 0x72, 0x42, 0x1b, 0x2a, 0x72, 0x42, 0x1b, 0x1d, 0x03, 0x04, 0x00, 0x00, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// 每行的字节数
int lineBytes = imgWidth / 8 + (imgWidth % 8 > 0 ? 1 : 0);
//位移
int movePosition = config != null ? config.getSetLeftWidth() / 8 : 0;
Log.i(TAG,"reverse lineBytes:" + lineBytes + ", imgWidth:" + imgWidth + ", imgHeight:" + imgHeight);
// 总字节长度
byte[] srcbytes = new byte[header.length + params.length + footer.length + imgHeight * (lineBytes + 3 + movePosition)];
int srclen = 0;
System.arraycopy(header, 0, srcbytes, srclen, header.length);
srclen = srclen + header.length;
System.arraycopy(params, 0, srcbytes, srclen, params.length);
srclen = srclen + params.length;
byte n1byte = (byte)((lineBytes + movePosition) % 256);
byte n2byte = (byte)((lineBytes + movePosition) / 256);
byte tmp = 0;
byte p1 = 0x01, p0 = 0x00;
int xcnt = 3; // x方向上的计数
for (int y = 0; y < imgHeight; y++) {
byte[] lineBytesArray = new byte[lineBytes + 3 + movePosition];
//System.arraycopy(movePosition, 0, lineBytesArray, 0, movePosition.length);
lineBytesArray[0] = (byte)0x62;
lineBytesArray[1] = n1byte;
lineBytesArray[2] = n2byte;
xcnt = 3; // x方向上的计数初始值
for (int i = 0; i < movePosition; i++) {
lineBytesArray[xcnt] = 0x00;
xcnt++;
}
for (int x = 0; x < imgWidth; x++) {
if (x % 8 == 0 || x == imgWidth -1) {
if(x != 0){
lineBytesArray[xcnt] = tmp;
xcnt++;
}
tmp = 0;
}
int r = bmp.getPixel(x, y);
if (r == Color.BLACK) {
tmp += p1 * Math.pow(2, 7 - x % 8); //高位开始
} else {
tmp += p0 * Math.pow(2, 7 - x % 8);
}
}
System.arraycopy(lineBytesArray, 0, srcbytes, srclen, lineBytesArray.length);
srclen = srclen + lineBytesArray.length;
Thread.yield();
}
System.arraycopy(footer, 0, srcbytes, srclen, footer.length);
Log.i(TAG,"reverse receipt is :" + srcbytes.length + ", all Time:" + (System.currentTimeMillis() - s));
return srcbytes;
}
Android bitmap转byte的更多相关文章
- Android Bitmap Drawable byte[] InputStream 相互转换方法
用android处理图片的时候,由于得到的资源不一样,所以经常要在各种格式中相互转化,以下介绍了 Bitmap Drawable byte[] InputStream 之间的转换方法: import ...
- Android中Bitmap, Drawable, Byte,ID之间的转化
Android中Bitmap, Drawable, Byte,ID之间的转化 1. Bitmap 转化为 byte ByteArrayOutputStream out = new ByteArray ...
- Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】
package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; ...
- Android Drawable、Bitmap、byte[]之间的转换
转自http://blog.csdn.net/june5253/article/details/7826597 1.Bitmap-->Drawable Bitmap drawable2Bitma ...
- android开发之Bitmap 、byte[] 、 Drawable之间的相互转换
一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...
- [翻译]开发文档:android Bitmap的高效使用
内容概述 本文内容来自开发文档"Traning > Displaying Bitmaps Efficiently",包括大尺寸Bitmap的高效加载,图片的异步加载和数据缓存 ...
- Android Bitmap 和 ByteArray的互相转换
Android Bitmap 和 ByteArray的互相转换 移动平台图像处理,需要将图像传给native处理,如何传递?将bitmap转换成一个 byte[] 方便传递也方便cpp代码直接处理图像 ...
- Android-Drawable、Bitmap、byte[]、资源文件相互转换
我们在Android的开发中,经常可以遇到图片的处理,当中,有很多是 Bitmap.Drawable.byte[]和资源文件它们直接相互转换. 今天就此总结一下: 1.资源文件转为Drawable 2 ...
- android Bitmap类方法属性 详细说明
(转:http://blog.csdn.net/ymangu666/article/details/37729109) 1. BitMap类public void recycle()——回收位图占用 ...
随机推荐
- web漏洞扫描工具集合
最好用的开源Web漏洞扫描工具梳理 链接:www.freebuf.com/articles/web/155209.html 赛门铁克2017年互联网安全威胁报告中提出在他们今年扫描的网站中,有76%都 ...
- 论integer是地址传递还是值传递(转)
原文链接:http://blog.csdn.net/witsmakemen/article/details/46874717 论integer是地址传递还是值传递 Integer 作为传参的时候是地址 ...
- mysql "Your password has expired...."错误解决方案
mysql -u root -p 进入mysql命令界面,然后输入 set password = password("新密码"); 参考:http://blog.csdn.net/ ...
- myeclipse单步调试
如何进行myclipse的单步调式与跟踪?希望大虾们详细点,多谢. 打断点,然后运行,进debug试图,按F6执行一行,按F5是钻进去执行 追问 朋友,能详细点吗? 本人是初学 回答 如图 如若成功请 ...
- Qt Creator 模块QtSql
在新建Qt Gui Application时,没有弹出模块选择页, 可以手动在pro文件中增加. 比如要选中QtSql模块,(目前我没有找到哪里可以修改要选中的模块), 我是手动在pro文件中增加了一 ...
- 新手学Appium_Python_Client
原文转自http://blog.sina.com.cn/s/blog_68f262210102v538.html 一,Appium_Python_Client的安装 推荐使用pip安装 pip ins ...
- 【liunx命令】上传下载文件的方法
scp 帮助命令: man scp scp功能: 下载远程文件或者目录到本地, 如果想上传或者想下载目录,最好的办法是采用tar压缩一下,是最明智的选择. 从远程主机 下载东西到 本地电脑 ...
- 企业web管理软件开发平台
可以自定义拖动记忆位置的part桌面 权限(功能菜单查看范围)设置界面 权限(人员数据查看范围)设置界面 菜单排序和名称设置界面 业务模块 自定义字段界面 业务功能 列表界面 业务功能 查询界面 ...
- prisma graphql 工具基本使用
项目使用docker-compose mysql 运行 安装 npm insatll -g prisma or yarn global add prisma 创建代码 项目结构 ├── README. ...
- yum安装apache及问题解决
一.检查服务器上是否已经安装了apache apache在linux系统里的名字是httpd,执行以下命令,如果有返回的信息,则会显示已经安装的软件.如果没有则不会显示其它的信息. rpm -qa h ...