热敏打印机-android系统pos机采用serialport串口操作打印机,打印出来的二维码不是正方形的

问题描述

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;
}

解决方案

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

时间: 2024-12-24 21:48:33

热敏打印机-android系统pos机采用serialport串口操作打印机,打印出来的二维码不是正方形的的相关文章

Android高级控件(三)——&amp;#160;使用Google ZXing实现二维码的扫描和生成相关功能体系

Android高级控件(三)-- 使用Google ZXing实现二维码的扫描和生成相关功能体系 摘要 现在的二维码可谓是烂大街了,到处都是二维码,什么都是二维码,扫一扫似乎已经流行到习以为常了,今天我们也来实现以下二维码的相关功能,我们使用到的是Google开源的Zxing项目 Zxing GitHub:https://github.com/zxing/zxing 这个项目很大,乱七八糟的,我们还是直接使用jar包吧,这里感谢一下医生,他为我们封装了一个3.1的jar,我们可以拿来用:http

去年的一场二维码支付风波揭开了微POS的面纱

去年的一场二维码支付风波揭开了微POS的面纱,互联网巨头微信和支付宝的突然杀入,震动了已沉睡多年的线下收单市场,也让躺着赚钱的银联面临被颠覆的尴尬."微POS"类产品的出现也成为智能硬件切入O2O+互联网金融领域的一个典型案例,作为智能硬件的一个跨界领域,我一直在关注. 在前一阵参加由搜狐IT/智东西/品途网联合举办的一场线下沙龙中,针对"硬件O2O如何破局"的主题展开探讨,发现要求来的嘉宾大都与支付业务相近,同时除了重庆速位这家公司的硬件产品是比较大的箱体没有带到

Android中的二维码生成与扫描功能

0. 前言 今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描.本篇旨在帮助有需求的同学快速完成二维码生成和扫描的功能. 1.    Zxing的使用 从github上下载项目后,可以看到整体代码结构如下: 我们只需将Zxing包下的所有代码copy一份到我们的项目中去,除了这些还需要zxing的jar包,最后相应的资源文件,包括values文件下的ids文件.raw文件中的资源文件(可以替换).

Android基于google Zxing实现二维码的生成_Android

最近项目用到了二维码的生成与识别,之前没有接触这块,然后就上网搜了搜,发现有好多这方面的资源,特别是google Zxing对二维码的封装,实现的已经不错了,可以直接拿过来引用,下载了他们的源码后,只做了少少的改动,就是在Demo中增加了长按识别的功能,网上虽然也有长按识别的Demo,但好多下载下来却无法运行,然后总结了一下,加在了下面的Demo中.   下面来介绍这个Demo的主类 public class BarCodeTestActivity extends Activity { priv

Android基于google Zxing实现二维码的生成

最近项目用到了二维码的生成与识别,之前没有接触这块,然后就上网搜了搜,发现有好多这方面的资源,特别是google Zxing对二维码的封装,实现的已经不错了,可以直接拿过来引用,下载了他们的源码后,只做了少少的改动,就是在Demo中增加了长按识别的功能,网上虽然也有长按识别的Demo,但好多下载下来却无法运行,然后总结了一下,加在了下面的Demo中.   下面来介绍这个Demo的主类 public class BarCodeTestActivity extends Activity { priv

Android从图片获取二维码的方法

之前的博客我记得讲过关于扫描二维码的内容,昨天,组长让我不仅可以扫描获取二维码,还可以通过图片获取里面的二维码.比如别人拍了一张二维码的照片,发送给你,app应该可以获取图片的二维码. 自己在网上查了资料,发现其实也很简单,用ZXing jar包里的获取图片二维码的QRCodeReader就基本可以了.不过大部分的内容,我自己也不明白,大家如果有兴趣,可以自己去查找资料. 1.点击按钮后,跳转到相册,选择有二维码的图片,返回到解析二维码的界面.这时通过返回的URI获取图片的路径. case CH

Android利用ZXing扫描二维码的实例代码解析_Android

相关阅读: Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题 此项目源码地址:请点击这里 看一下zxing的项目结构,我这里直接拿过来用的   看一下扫码的activity: package com.fanyafeng.barcode.activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bund

Android利用ZXing扫描二维码的实例代码解析

相关阅读: Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题 此项目源码地址:请点击这里 看一下zxing的项目结构,我这里直接拿过来用的 看一下扫码的activity: package com.fanyafeng.barcode.activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle

二维码-Android 导入library 运行时提示NotFoundClass

问题描述 Android 导入library 运行时提示NotFoundClass 用eclipseADT 写一个简单的APP,其中包括二维码扫码 需要用到 ImageIO 等外部类,于是导入了JRE1.6 library ,一切正常 也可以正常import javax.imageio.ImageIO;等 然而真机运行时却一直提示ClassNotFoundException 上网查过一番之后,楼主在build path 里的Order and Export勾选上了该library,但问题依旧--