2 u013468402 u013468402 于 2014.10.30 14:45 提问

android系统pos机采用serialport串口操作打印机,打印出来的二维码不是正方形的
Bitmap bitmap = Create2DCode("测试二维码");


        int bmWidth = bitmap.getWidth();
        int bmHeight = bitmap.getHeight();
        byte[] data = new byte[]{0x00};
        Color prefix = new Color();
        int prefixint;
        /*
         * Set line spacing
         */
        mOutputStream_P.write(0x1b);
        mOutputStream_P.write(0x33);
        mOutputStream_P.write(8);

        int[] dots = new int[bmWidth * bmHeight];
        // //把位图的数据拷贝到dots数组中,每一个都由一个表示颜色值的int值来表示
        bitmap.getPixels(dots, 0, bmWidth, 0, 0, bmWidth, bmHeight);

        for (int i = 0; i < ((bmHeight+7)/8); i++)
        {

            mOutputStream_P.write(0x1b);
            mOutputStream_P.write(0x2a);
            mOutputStream_P.write(0);
            mOutputStream_P.write(bmWidth % 256);
            mOutputStream_P.write(bmWidth / 256);
            for (int j = 0; j < bmWidth; j++)
            {
                for (int k = 0; k < 8; k++)
                {
                    if (((i * 8) + k) < bmHeight)  // if within the BMP size
                    {
                        prefixint = bitmap.getPixel(j, (i * 8) + k);

                        if (prefix.BLACK == prefixint)
                        {
                            data[0] += (byte)(128 >> k);
                        }
                    }
                }
                mOutputStream_P.write(data);
                data[0] = 0x00;  
            }

            mOutputStream_P.write(10);
        }

/**
* 用字符串生成二维码
* @param str
* @author
* @return
* @throws WriterException
*/
public Bitmap Create2DCode(String str) throws WriterException {
Hashtable hint = new Hashtable();
hint.put(EncodeHintType.CHARACTER_SET, "GBK");
//生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败
BitMatrix matrix = new MultiFormatWriter().encode(str,BarcodeFormat.QR_CODE, 144, 96,hint);
int width = matrix.getWidth();
int height = matrix.getHeight();
//二维矩阵转为一维像素数组,也就是一直横着排了
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if(matrix.get(x, y)){
pixels[y * width + x] = 0xff000000;//black
}else{
pixels[y * width + x] = 0xffffffff;//white
}

        }
    }
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    //通过像素数组生成bitmap,具体参考api
    bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
    return bitmap;
}

1个回答

a774760644
a774760644   2014.12.12 16:58

博主,你好,问下你解决这个问题没有??

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
生成二维码图片,并将图片转换成POS机能打印的byte[]类型
首先是生成二维码图片:(这里我是用的zxing框架) /** * 生成二维码 要转换的地址或字符串,可以是中文 * * @param url * @param width * @param height * @return */ public Bitmap createQRImage(String url, final i
关于pos打印机通过tcp/ip操作打印指令集
电脑通(过串口服务器的ip地址)将打印命令-->串口服务器-->串口服务器通过串口将电脑发送的ESC/POS指令传给终端pos打印机,执行打印命令。已经实现了直接通过端口发送指令,现在的问题是怎样通过网络发送指令给串口服务器,求各位大牛帮忙!代码如下: C# code ? 1 2 3 4 5 6 7 8
热敏打印机打印二维码图片
最近研究热敏打印机打印二维码,用到了北洋OPOS二次开发包DLL,借鉴该代码:http://www.cnblogs.com/datacool/archive/2012/11/27/2014666.html ,下面是扩展的一个打印图片的方法 /// /// 打印图片 /// /// public void PrintBmp(Bitmap bmp) { byte[] data =
C#热敏打印图片 串口打印图片
如图,一步一步慢慢调出来的 //串口通信类public System.IO.Ports.SerialPort serialPort = null;serialPort = new System.IO.Ports.SerialPort(&quot;COM1&quot;); serialPort.BaudRate =19200; serialPort.DataBits = 8; serialPort.Stop...
Android进阶——安卓调用ESC/POS打印机打印
前言前一段时间由于工作需要,要研究一下安卓程序调用打印机打印小票,并且要求不能使用蓝牙调用,研究了一下,可以利用socket连接,来实现打印功能。写了个Demo,分享一下。工具:一台打印机(芯烨XP-80XX),一台安卓测试机开发环境:Android Studio 1.5需求:点击按钮,实现打印小票功能,小票上除必要文字外,还要有二维码。封装了一个Pos打印工具类:package com.exam...
C#操作TMPOS58串口打印机一些心得
本人开发一套中小酒店使用的餐饮管理软件,应客户需求,给后厨房添加打印机。前台下单的时候要给后厨房自动发送厨房菜品名称,数量,桌号,下单时间。这里有如下的技术问题:1-串口打印机状态的判定,非常重要。打印机未开或出错(例如:缺纸)。程序要能判断出来进行菜单队列储存,直到打印机状态正常再打印出去。2-根据不同串口打印机进行pos指令的细化,这个比较令人烦啊。打印机类型太多了。弄了尽
微信支付小票打印机如何打印收付款二维码(教程)
微信收付款二维码小票打印可以借助智能POS机来实现,现在微信支付的使用已经越来越普及了,微信支付最大的特点就是快捷+方便,只需要扫一下二维码即可完成支付,避免了找零钱的繁琐以及假币的辨别,今天小白君要和大家分享的是微信支付小票如何打印,想知道吗?看了你就知道。工具/原料智能手机微乐锋商家版智能POS机无线WiFi网络一、激活智能POS机设备1在商家后台找到【系统设备】-【控制台】-【设备激活】-【...
android连接小票打印机,打印小票数据的两种模式
为了开发android无线点餐系统,需要用到打印小票任务,根据网上查找资料所得,学习了两种方法,一种为通过tomcat服务连接服务器所连接的打印机打印,一种为直接连接网络打印机打印 一、通过tomcat服务连接服务器所连接的打印机打印 手机或平板是一种移动设备,不可能直接打印机,所以要把打印的数据发给tomcat,通过服务器电脑打印 先定义一个javabean实体类,用来保存数据
小票打印机打印二维码 demo
本测试程序 调用北洋通用接口 打印机打印二维码图片,生成二维码 并将产生的二维码图片转换成打印机可以打印的单色位图
esp-pos打印图片和二维码
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); data[0] = 0x1D;data[1] = 0x76;data[2] = 0x30;data[3] = 0x00;data[4] = (byte) w;// xLdata[5] = (byte) (w >> 8);// xHdata[6] = (byte) h;data[7