生成二维码图片并且使用BASE64编码显示到前端页面

现在用二维码传递消息是如此的流行和快捷,二维码中 可存储的信息量比较大,容易识别,内容丰富,可以储存文本,链接,名片等等。并且现在支付宝微信等的支付都直接可以用扫描二维码进行支付,利用特定的扫码软件,能够解析二维码中的内容。在我的项目中,用到了需要存储一个二维码的链接,让用户直接扫码以后就可以下单的需求。经过查询,可以用Google的qrcodegencore.jar的类库直接生成二维码。附件中是实现生成二维码的jar包
接下来用两个步骤来实现此功能需求

1、生成二维码

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import org.apache.commons.lang3.StringUtils;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;

public class QRGenUtils {

    private static final int black = 0xFF000000;
    private static final int   = 0xFFFFFFFF;

    public static BufferedImage toBufferedImage(BitMatrix matrix) {
        int width = matrix.getWidth();
        int height = matrix.getHeight();
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                image.setRGB(x, y, matrix.get(x, y) ? black : white);
            }
        }
        return image;
    }

    public static void writeToFile(BitMatrix matrix, String format, File file)
            throws IOException {
        BufferedImage image = toBufferedImage(matrix);
        ImageIO.write(image, format, file);
    }

    public static void createQRImage(String content, int width, int height, String path, String fileName) throws Exception {
        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        Hashtable hints = new Hashtable();
        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
        BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);
        if (StringUtils.isNotBlank(path)) {
            if (!path.endsWith("/")) {
                path = path + "/";
            }
        } else {
            path = "";
        }
        String suffix = "jpg";
        if (fileName.indexOf(".") <= -1) {
            fileName = fileName + "." + suffix;
        } else {
            suffix = fileName.split("[.]")[1];
        }
        fileName = path + fileName;
        File file = new File(fileName);
        writeToFile(bitMatrix, suffix, file);
    }

    public static BufferedImage createQRImageBuffer(String content, int width, int height) throws  Exception{
        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        Hashtable hints = new Hashtable();
        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
        BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);
        BufferedImage image = toBufferedImage(bitMatrix);
        return image;
    }
}

2、把生成BufferedImage数据流进行Base64编码

BufferedImage qrImageBuffer = QRGenUtils.createQRImageBuffer(content, 200, 200);
ByteArrayOutputStream os=new ByteArrayOutputStream();
ImageIO.write(qrImageBuffer, "png", os);
Base64 base64 = new Base64();
String base64Img = new String(base64.encode(os.toByteArray()));

然后把编码后图片在前端页面直接取值即可

<img id="cashier_page_image" src=‘data:img/jpg;base64,${base64Img }‘ style="display: none"/>
时间: 2024-10-29 19:08:06

生成二维码图片并且使用BASE64编码显示到前端页面的相关文章

java 使用qrcode生成二维码图片或者base64字符串

通过传入字符串,生成二维码图片或者base64格式字符串 1 public static String barcode2Base64(String msg) throws Exception{ 2 Qrcode x = new Qrcode(); 3 //N代表数字,A代表a-z,B代表其他字符 4 x.setQrcodeEncodeMode('B'); 5 //设置纠错等级 6 x.setQrcodeErrorCorrect('M'); 7 //设置版本号(1-40) 8 x.setQrcod

JAVA生成二维码图片代码

首先需要导入 QRCode.jar 包 下载地址看这里   http://pan.baidu.com/s/1o6qRFqM 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.io.UnsupportedEncoding

C#生成二维码图片

使用C#生成二维码图片,并保存到指定的目录. 1.添加对生成二维码图片dll的引用: 下载地址:http://files.cnblogs.com/files/zflsyn/ThoughtWorks.QRCode.zip 2.引用命名空间 1 using System.Text; 2 using System.Drawing; 3 using ThoughtWorks; 4 using ThoughtWorks.QRCode; 5 using ThoughtWorks.QRCode.Codec;

QrenCode : 命令行下生成二维码图片

对于二维码大家应该并不陌生,英文名为 2-dimensional bar code 或 QR Code,是一种用图形记载信息的技术,最常见的是应用在手机应用上.用户通过手机摄像头扫描二维码或输入二维码下面的号码.关键字即可实现快速手机上网,快速便捷地浏览网页.下载图文.音乐.视频等等. 在 Ubuntu / Linux 上,有一个名为 QrenCode 的命令行工具可以很容易帮我们生成二维码. # 安装: sudo apt-get install qrencode # 使用: qrencode

JAVA中生成二维码图片的方法

JAVA中生成二维码的方法并不复杂,使用google的zxing包就可以实现.下面的方法包含了生成二维码.在中间附加logo.添加文字功能. 一.下载zxing的架包,并导入项目中,如下: 最主要的包都在com.google.zxing.core下.如果是maven项目,maven依赖如下: 1 <dependency> 2 <groupId>com.google.zxing</groupId> 3 <artifactId>core</artifact

使用python调用zxing库生成二维码图片

(1)     安装Jpype 用python调用jar包须要安装jpype扩展,在Ubuntu上能够直接使用apt-get安装jpype扩展 $ sudo apt-get install python-jpype 关于使用Jpype调用jar包的方式.请看http://blog.csdn.net/niuyisheng/article/details/9002926 (2)     得到zxing  jar包 使用zxing第三方库生成二维码图片,关于zxing的介绍能够看其github地址:h

C# 利用QRCode生成二维码图片

引用LYBwwp的博文http://blog.csdn.net/lybwwp/article/details/18444369 网上生成二维码的组件是真多,可是真正好用的,并且生成速度很快的没几个,QRCode就是我在众多中找到的,它的生成速度快.但是网上关于它的使用说明,真的太少了,大都是千篇一律的复制粘贴.这是本要用它做了一个项目后,简单的整理了一下. 组件下载地址:http://download.csdn.net/detail/lybwwp/6861821 下载文件包包含ThoughtWo

phpqrcode.php 生成二维码图片用于推广

<?php /* * PHP QR Code encoder * * This file contains MERGED version of PHP QR Code library. * It was auto-generated from full version for your convenience. * * This merged version was configured to not requre any external files, * with disabled cach

JavaScript生成二维码图片

1.引入一个二维码工具的js文件,同时需要引入jquery文件 下面是jquery.qrcode.min.js文件内容: 1 (function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataC