android使用qrcode_swetake.jar生成二维码

只有生成二维码的代码

优点是占用方法数比较少 以防65535

 

    static Paint paint;

    static {
        paint = new Paint(); // 设置一个笔刷大小是1的黑色的画笔
        paint.setColor(Color.BLACK);
        paint.setStrokeJoin(Paint.Join.ROUND);
        paint.setStrokeCap(Paint.Cap.ROUND);
        paint.setStrokeWidth(1);
    }

    private static final int RECT_SIZE = 6;
    private static final int PIX_OFF = 2;//设置偏移量 不设置可能导致解析出错

    /**
     * 生成二维码(QRCode)图片
     *
     * @param content
     * @param
     */
    public static Bitmap encoderQRCode(String content) {
        Canvas g;
        try {
            Qrcode qrcodeHandler = new Qrcode();
            // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
            qrcodeHandler.setQrcodeErrorCorrect('L');
            //N(Numeric,数字), A(Alphanumeric,英文字母), B(Binary,二进制), K(Kanji,汉字)
            qrcodeHandler.setQrcodeEncodeMode('B');
            int version = 4;//1-40 共40个版本 ,版本1(21x21模块), 版本40(177x177模块), 每增加一个版本每边增加4个模块 ,如: 版本4 21+(4-1)*4=33 为33x33模块
            qrcodeHandler.setQrcodeVersion(version);

            int PIC_SIZE = RECT_SIZE * (21 + (4 * (version - 1))) + 2 * PIX_OFF;
            byte[] contentBytes = content.getBytes("utf-8");
            Bitmap bufferBitMap = Bitmap.createBitmap(PIC_SIZE, PIC_SIZE, Bitmap.Config.ARGB_8888);
            g = new Canvas(bufferBitMap);
            g.drawColor(Color.TRANSPARENT);
            // 输出内容 > 二维码
            if (contentBytes.length > 0 && contentBytes.length < 512) {
                boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
                for (int i = 0; i < codeOut.length; i++) {
                    for (int j = 0; j < codeOut.length; j++) {
                        if (codeOut[j][i]) {
                            float left = j * RECT_SIZE + PIX_OFF;
                            float top = i * RECT_SIZE + PIX_OFF;
                            float right = (j + 1) * RECT_SIZE + PIX_OFF;
                            float bottom = (i + 1) * RECT_SIZE + PIX_OFF;
                            g.drawRect(left, top, right, bottom, paint);
                        }
                    }
                }
            } else {
                Log.e("QRCodeEncoderHandler", "QRCode content bytes length = " + contentBytes.length
                        + " not in [ 0,120 ]. ");
            }
            return bufferBitMap;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

 

转载于:https://www.cnblogs.com/waterbear/p/4569855.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用qrcode.vue生成二维码的步骤如下: 1. 引入qrcode.vue组件,该组件的体积相对较小,但不能添加中心logo。 2. 在Vue模板中使用vue-qr组件,设置id为"qrcode",并传入生成二维码所需的text和size参数。 3. 在Vue模板中添加一个按钮,当点击按钮时触发saveImg函数。 4. 在Vue的script setup中,使用import语句引入qrcode.vue组件和其他所需的资源。 5. 根据需要,可以在logoSrc变量中设置logo的路径。 6. 在saveImg函数中,获取生成的二维码图片元素,创建一个下载链接,并设置链接的href和download属性。 7. 点击按钮后,调用a元素的click方法,实现下载二维码的功能。 你可以参考以下代码示例: ```html <template> <qrcode id="qrcode" :text="value" size="135"></qrcode> <br /> <el-button @click="saveImg">下载二维码</el-button> </template> <script setup> import qrcode from 'qrcode.vue' import code_logo from '../../assets/vue.svg' const props = defineProps({ value: { type: String, default: 'https://www.baidu.com/' } }) let logoSrc = code_logo function saveImg() { let picData = document.getElementById("qrcode") let a = document.createElement("a"); a.href = picData.src; a.download = "qrcode.png"; a.click(); } </script> ``` 请注意,以上代码只是一个示例,具体的实现方式可能会根据你的实际需求和项目配置而有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue3项目生成并下载二维码,关于vue-qr.vue与qrcode.vue插件之间的区别](https://blog.csdn.net/qq_51758070/article/details/128232266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值