JAVA实现二维码生成加背景图代码实例

这篇文章主要介绍了JAVA实现二维码生成加背景图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

pom.xml依赖

<!-- 二维码生成 -->
    <!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
    <dependency>
      <groupId>com.google.zxing</groupId>
      <artifactId>core</artifactId>
      <version>3.0.1</version>
    </dependency>
/**
 * 类名称:QRCodeMax
 * 类描述:生成二维码图片+背景+文字描述工具类
 * 创建人:一个除了帅气,一无是处的男人
 * 创建时间:2018年12月x日x点x分x秒
 * 修改时间:2019年2月x日x点x分x秒
 * 修改备注:更新有参数构造
 * @version: 2.0
 *
 */
public class QRCodeMax {

  //文字显示
  private static final int QRCOLOR = 0x201f1f; // 二维码颜色:黑色
  private static final int BGWHITE = 0xFFFFFF; //二维码背景颜色:白色

  // 设置QR二维码参数信息
  private static Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>() {
    private static final long serialVersionUID = 1L;
    {
      put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 设置QR二维码的纠错级别(H为最高级别)
      put(EncodeHintType.CHARACTER_SET, "utf-8");// 设置编码方式
      put(EncodeHintType.MARGIN, 0);// 白边
    }
  };

    /**
    * 生成二维码图片+背景+文字描述
    * @param codeFile 生成图地址
    * @param bgImgFile 背景图地址
    * @param WIDTH 二维码宽度
    * @param HEIGHT 二维码高度
    * @param qrUrl 二维码识别地址
    * @param note 文字描述1
    * @param tui  文字描述2
    * @param size 文字大小
    * @param imagesX 二维码x轴方向
    * @param imagesY 二维码y轴方向
    * @param text1X 文字描述1x轴方向
    * @param text1Y 文字描述1y轴方向
    * @param text2X 文字描述2x轴方向
    * @param text2Y 文字描述2y轴方向
    */
    public static void CreatQRCode( File codeFile, File bgImgFile,Integer WIDTH,Integer HEIGHT,String qrUrl,
        String note,String tui,Integer size,Integer imagesX,Integer imagesY,Integer text1X,Integer text1Y
        ,Integer text2X,Integer text2Y) {
      try {
        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        // 参数顺序分别为: 编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
        BitMatrix bm = multiFormatWriter.encode(qrUrl, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);

        // 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF) 白(0xFF000000)两色
        for (int x = 0; x < WIDTH; x++) {
          for (int y = 0; y < HEIGHT; y++) {
            image.setRGB(x, y, bm.get(x, y) ? QRCOLOR : BGWHITE);
          }
        }

        /*
         *   添加背景图片
         */
        BufferedImage backgroundImage = ImageIO.read(bgImgFile);
        int bgWidth=backgroundImage.getWidth();
        int qrWidth=image.getWidth();
        //距离背景图片x边的距离,居中显示
        int disx=(bgWidth-qrWidth)-imagesX;
        //距离y边距离 * * * *
        int disy=imagesY;
        Graphics2D rng=backgroundImage.createGraphics();
        rng.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP));
        rng.drawImage(image,disx,disy,WIDTH,HEIGHT,null);

        /*
         *   文字描述参数设置
         */

        Color textColor=Color.white;
        rng.setColor(textColor);
        rng.drawImage(backgroundImage,0,0,null);
        //设置字体类型和大小(BOLD加粗/ PLAIN平常)
        rng.setFont(new Font("微软雅黑,Arial",Font.BOLD,size));
        //设置字体颜色
        rng.setColor(Color.black);
        int strWidth=rng.getFontMetrics().stringWidth(note);

        //文字1显示位置
        int disx1=(bgWidth-strWidth)-text1X;//左右
        rng.drawString(note,disx1,text1Y);//上下

        //文字2显示位置
        int disx2=(bgWidth-strWidth)-text2X;//左右
        rng.drawString(tui,disx2,text2Y);//上下

        rng.dispose();
        image=backgroundImage;
        image.flush();
        ImageIO.write(image, "png", codeFile);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
      File bgImgFile=new File("D://tu/bg.png");//背景图片
      File QrCodeFile = new File("D://tu/myqrcode.png");//生成图片位置
      String url = "https://blog.csdn.net/weixin_38407595";//二维码链接
      String note = "" ;//文字描述
      String tui = "" ;//文字描述

      //宣传二维码生成
      //生成图地址,背景图地址,二维码宽度,二维码高度,二维码识别地址,文字描述1,文字描述2,文字大小,图片x轴方向,图片y轴方向,文字1||2xy轴方向
      CreatQRCode(QrCodeFile,bgImgFile, 148, 148, url, note,tui, 38, 408, 123, 0, 0, 410, 210);

    }
}

效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java中ZXing 生成、解析二维码图片的小示例

    概述 ZXing 是一个开源 Java 类库用于解析多种格式的 1D/2D 条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME.J2SE和Android. 官网:ZXing github仓库 实战 本例演示如何在一个非 android 的 Java 项目中使用 ZXing 来生成.解析二维码图片. 安装 maven项目只需引入依赖: <dependency> <groupId>com.google.zxing

  • java实现二维码生成的几个方法(推荐)

    java实现二维码生成的几个方法,具体如下: 1: 使用SwetakeQRCode在Java项目中生成二维码 http://swetake.com/qr/ 下载地址 或着http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip 这个是日本人写的,生成的是我们常见的方形的二维码 可以用中文 如:5677777ghjjjjj 2: 使用BarCode4j生成条形码和二维码 BarCode4j网址:http://sourcefor

  • 利用java生成二维码工具类示例代码

    二维码介绍 二维条形码最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的"0"."1"比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理. 如下为java生成二维码工具类,可以选择生成文件,或者直接在页面生成,话不多说了,来一起看看详细的示例代码吧. 示例代码 import java.aw

  • Java实现二维码生成的代码方法

    1.支持QRcode.ZXing 二维码生成.解析: 2.QRCode 方式生成二维码支持添加图片,如下: package common; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Has

  • Java使用Google Zxing生成二维码的例子

    以前只用过jQuery.qrcode生成过二维码,这次使用的是Google的zxing通过Java代码生成二维码并以流的方式输出到前台页面 所需jar包:zxing-3.2.1.jar 代码 前台展示页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); S

  • 二维码生成Java实现代码

    本文实例为大家分享了二维码生成Java实现代码,供大家参考,具体内容如下 package com.yihaomen.barcode; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Shape; import java.awt.geom.RoundRectangle2D; import java.awt

  • Java生成二维码可添加logo和文字功能

    废话不多说,直接给大家贴代码了,具体代码如下所示: package com.luo.wctweb.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.util.Date; imp

  • Java实现的生成二维码统计扫描次数并转发到某个地址功能详解

    本文实例讲述了Java实现的生成二维码统计扫描次数并转发到某个地址功能.分享给大家供大家参考,具体如下: 需求: 近几天某个项目需要用户录入个自己的网址,然后系统需要根据用户的的网址生成二维码,然后用户可以拿着它给别人扫描,访问到他录入的网址,在这个过程中.我需要知道用户的二维码被扫描的次数,也就是后面根据其可以做一些扫描排名之类的. 思路: ① 先生成二维码,csdn已经有前辈写了,那么我就直接拿过来用了. ② 将用户的id,和用户录入的网址处理之后作为http get参数封装到二维码中,然后

  • JAVA实现二维码生成加背景图代码实例

    这篇文章主要介绍了JAVA实现二维码生成加背景图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 pom.xml依赖 <!-- 二维码生成 --> <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <groupId>com.google.zxing</groupId> <art

  • 基于google zxing的Java二维码生成与解码

    本文实例为大家分享了Java二维码生成与解码的具体代码,供大家参考,具体内容如下 一.添加Maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包) <!-- google二维码工具 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.1.0</version> &

  • 基于Java实现二维码的生成和解析

    目录 导入相关jar包 二维码工具类编 创建二维码图片 二维码设置logo 将文明说明增加到二维码上 解析二维码 main方法测试类 最近因个人需求需要对根据内容生成二维码和进行解析!记录一下!二维码其实就是一种编码技术,只是这种编码技术是用在图片上了,将给定的一些文字,数字转换为一张经过特定编码的图片.这里利用的是 google 公司的 zxing使用方便,可以操作条形码或者二维码等 导入相关jar包 <!-- 二维码 --> <dependency> <groupId&g

  • iOS 二维码生成及扫码详解及实例代码

    iOS二维码生成及扫码 现在越来越多的应用加入二维码相关的业务,在iOS开发市场上很多开发人员都在使用第三方的扫码与生成二维码的控件,个人认为此类的第三方控件识别度不高.最近正好整理新框架的事情,研究了一下.具体代码如下 生成二维码代码 /** * @author 半 饱, 15-12-18 * * @brief 生成二维码图片 * * @param code 生成二维码图片内容 * @param width 二维码图片宽度 * @param height 二维码图片高度 * * @return

  • Android 二维码 生成和识别二维码 附源码下载

    今天讲一下目前移动领域很常用的技术--二维码.现在大街小巷.各大网站都有二维码的踪迹,不管是IOS.Android.WP都有相关支持的软件.之前我就想了解二维码是如何工作,最近因为工作需要使用相关技术,所以做了初步了解.今天主要是讲解如何使用ZXing库,生成和识别二维码.这篇文章实用性为主,理论性不会讲解太多,有兴趣可以自己查看源码. 1.ZXing库介绍 这里简单介绍一下ZXing库.ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口

  • 详解二维码生成工厂

    本次主要分享的是3个免费的二维码接口的对接代码和测试得出的注意点及区别,有更好处理方式多多交流,相互促进进步:最近在学习JavsScript的扩展TypeScript,感觉语法糖很甜,大部分与C#更为类似,可能都是微软项目的原因吧,有兴趣的朋友可以多多相互交流下: 以上是个人的看法,下面来正式分享今天的文章吧: Google的Api二维码生成接口 2d-code的Api二维码生成接口 topscan的Api二维码生成接口 使用面向对象+加载程序集创建对象合并以上接口封装成二维码生成工厂 下面一步

  • Java实现二维码功能的实例代码

    最近突然想写一些文章,所以就陆陆续续的编写一些自我感觉有用的并且大家也可能用到的一些技术代码.方便互相学习交流. 今天这篇文章,主要是利用Java实现二维码: 在写代码之前先讲一下整体思路,以方便更好更快捷的实现功能. (1).首先要想实现二维码功能需要导入com.google.zxing的核心jar包,我这里导入的是core-3.2.1.jar; (2).所谓二维码莫过于把需要的内容放入一张图片中,所以这里首先是创建一张带有参数内容的图片,方法如下: private static Buffer

随机推荐