Android生成二维码

这篇具有很好参考价值的文章主要介绍了Android生成二维码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.zxing jar包地址

二.封装工具类


一.zxing jar包地址

链接: https://pan.baidu.com/s/1toPsCFS1yV6ZifXC1hwwkw?pwd=y12a 提取码: y12a 复制这段内容后打开百度网盘手机App,操作更方便哦 
--来自百度网盘超级会员v3的分享
 文章来源地址https://www.toymoban.com/news/detail-458523.html

二.封装工具类

public class QRCodeUtils {

    /**
     * 生成二维码
     *
     * @param url 需要生成二维码的网址
     * @param size 需要生成二维码的大小
     * @return bitmap
     */
    public static Bitmap createQRCode(String url, int size) {
        Bitmap bitmap = null;
        try {
            HashMap<EncodeHintType, Object> hints = new HashMap<>();
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            hints.put(EncodeHintType.MARGIN, 0);
            BitMatrix bitMatrix = new QRCodeWriter().encode(url,
                    BarcodeFormat.QR_CODE, size, size, hints);
            bitMatrix = deleteWhite(bitMatrix);
            int width = bitMatrix.getWidth();
            int height = bitMatrix.getHeight();

            int[] pixels = new int[width * height];
            for (int y = 0; y < height; y++) {
                for (int x = 0; x < width; x++) {
                    if (bitMatrix.get(x, y)) {
                        pixels[y * height + x] = Color.BLACK;
                    } else {
                        pixels[y * height + x] = Color.WHITE;
                    }
                }
            }
            bitmap = Bitmap.createBitmap(width, height,
                    Bitmap.Config.ARGB_8888);
            bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
        } catch (Throwable e) {

        }
        return bitmap;
    }

    /**
     * 生成带logo的二维码
     *
     * @param url 需要生成二维码的网址
     * @param size 需要生成二维码的大小
     * @param logo logo
     * @return bitmap
     */
    public static Bitmap createQRCodeWithLogo(String url, int size, Bitmap logo) {
        Bitmap bitmap = null;
        try {
            HashMap<EncodeHintType, Object> hints = new HashMap<>();
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            hints.put(EncodeHintType.MARGIN, 0);
            /*
             * 设置容错级别,默认为ErrorCorrectionLevel.L
             * 因为中间加入logo所以建议你把容错级别调至H,否则可能会出现识别不了
             */
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
            BitMatrix bitMatrix = new QRCodeWriter().encode(url, BarcodeFormat.QR_CODE, size, size, hints);
            bitMatrix = deleteWhite(bitMatrix);

            int width = bitMatrix.getWidth();//矩阵高度
            int height = bitMatrix.getHeight();//矩阵宽度
            int halfWidth = width / 2;
            int halfHeight = height / 2;

            //将logo图片缩放成二维码的5分之一大小
            int halfLogoWidth = 0;
            int halfLogoHeight = 0;
            if (logo != null) {
                logo = Bitmap.createScaledBitmap(logo, width / 5, height / 5, false);
                halfLogoWidth = logo.getWidth() / 2;
                halfLogoHeight = logo.getHeight() / 2;
            }

            int[] pixels = new int[width * height];
            for (int y = 0; y < height; y++) {
                for (int x = 0; x < width; x++) {
                    if (logo != null && x > halfWidth - halfLogoWidth && x < halfWidth + halfLogoWidth
                            && y > halfHeight - halfLogoHeight && y < halfHeight + halfLogoHeight) {
                        //该位置用于存放图片信息
                        //记录图片每个像素信息
                        //如果log为null,
                        pixels[y * height + x] = logo.getPixel(x - halfWidth
                                + halfLogoWidth, y - halfHeight + halfLogoHeight);
                    } else {
                        if (bitMatrix.get(x, y)) {
                            pixels[y * height + x] = Color.BLACK;
                        } else {
                            pixels[y * height + x] = Color.WHITE;
                        }
                    }
                }
            }
            bitmap = Bitmap.createBitmap(width, height,
                    Bitmap.Config.ARGB_8888);
            bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return bitmap;
    }

    private static BitMatrix deleteWhite(BitMatrix matrix) {
        int[] rec = matrix.getEnclosingRectangle();
        if (rec[0] == 0 && rec[1] == 0) {
            return matrix;
        }

        int resWidth = rec[2] + 1;
        int resHeight = rec[3] + 1;
        BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);
        resMatrix.clear();
        for (int i = 0; i < resWidth; i++) {
            for (int j = 0; j < resHeight; j++) {
                if (matrix.get(i + rec[0], j + rec[1]))
                    resMatrix.set(i, j);
            }
        }
        return resMatrix;
    }
}

到了这里,关于Android生成二维码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Spring Boot中使用ZXing开源库生成带有Logo的二维码

    在上一篇文章的基础上,我们将进一步扩展功能,实现在生成的二维码中嵌入Logo图片。这样的二维码更具个性化和识别度。让我们逐步完成这个功能。 首先,准备一张用作Logo的图片,并确保它的大小适中。将Logo图片放置在项目的资源文件夹中,例如 src/main/resources 。 在 Q

    2024年01月24日
    浏览(53)
  • 二维码生成解析用ZXing.NET就够了,不要再引一堆生成和解析库了

    ZXing.NET 是一个开源的、功能强大的二维码处理库,它能够对二维码进行解码(读取信息)和编码(生成二维码)。ZXing 是 \\\"Zebra Crossing\\\" 的缩写,是一个跨平台的、用于解码和生成条形码和二维码的库。以下是一些 ZXing.Net 的主要功能通过实例讲解。 这些示例演示了 ZXing.Net 的

    2024年02月04日
    浏览(43)
  • JavaFx 生成二维码工具类封装

    原文地址: JavaFx 生成二维码工具类封装 - Stars-One的杂货小窝 之前星之音乐下载器有需要生成二维码功能,当时用的是一个开源库来实现的,但是没过多久,发现那个库依赖太多,有个http-client的依赖,把软件都搞大了一倍,而且有时候开发的时候下载依赖还报错,就想换个方案 于是在

    2024年02月01日
    浏览(38)
  • zxing二维码位矩阵转换成Bitmap位图

    ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。 该项目可实现的条形码编码和解码。我们支持以下格式: UPC-A,UPC-E EAN-8,EAN-13 39码 93码 代码128 创新及科

    2023年04月11日
    浏览(50)
  • 基于uQRCode封装的Vue3二维码生成插件

    标题:基于uQRCode封装的Vue3二维码生成插件 摘要:本文介绍了一种基于uQRCode封装的Vue3二维码生成插件,可以在Javascript运行环境下生成二维码并返回图片地址。该插件适用于所有Javascript运行环境,并且支持微信小程序。本文将详细介绍该插件的使用方法,并给出一个基于Vu

    2024年02月05日
    浏览(61)
  • Android studio 实现生成二维码和扫描二维码

    效果图 build.gradle(:app)添加依赖 Manifests.xml activity_main.xml MainActivity ScanActivity

    2024年02月10日
    浏览(47)
  • Android生成二维码

    目录 一.zxing jar包地址 二.封装工具类 链接: https://pan.baidu.com/s/1toPsCFS1yV6ZifXC1hwwkw?pwd=y12a 提取码: y12a 复制这段内容后打开百度网盘手机App,操作更方便哦  --来自百度网盘超级会员v3的分享  

    2024年02月06日
    浏览(25)
  • Android实现生成二维码以及扫描二维码的功能(超级简单!)

    文章目录 ​​​​​​ 前言 二、实现生成二维码的功能 三、实现扫面二维码的功能 总结 提示:这里可以添加本文要记录的大概内容: 我是通过一个第三方库来实现二维码的生成,以及扫描二维码的功能,开源库如下: 一、布局文件如下 布局比较简单,就只有简单的一些

    2024年02月12日
    浏览(57)
  • 【Android】实现生成二维码、条形码和扫描二维码的功能

    目录 一、添加依赖 二、布局文件 三、实现生成二维码的功能 四、效果图 要先添加一个第三方库来实现二维码的生成以及扫描二维码的功能,开源库如下: 在build.grade(Moudle)中添加依赖: 效果如下: activity_main.xml: MainActivity.java: 简单粗暴! 感谢ლ(°◕‵ƹ′◕ლ)!!!

    2024年02月11日
    浏览(66)
  • C#中轻松实现二维码和条形码识别:OpenCvSharp和ZXing详细教程

      概述: 本教程使用OpenCvSharp和ZXing库,详细介绍了在C#中识别二维码和条形码的步骤。通过导入必要的命名空间、加载图像,并使用ZXing库进行二维码和条形码的识别,提供了清晰的示例代码。这方便了开发人员在项目中集成二维码和条形码识别功能。 要使用OpenCvSharp来分别

    2024年03月09日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包