Java教程

使用IDEA创建一个通过url链接生成二维码的java程序|自动生成二维码

本文主要是介绍使用IDEA创建一个通过url链接生成二维码的java程序|自动生成二维码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

        平时使用了那么多的二维码,今天我们自己做一个二维码。今天刚安装了IDEA,学会了用法,就来通过IDEA做一个生成二维码的程序。

        首先新建一个项目

        设置项目名称

        点击Next之后,出现下图所示页面:

         这里要注意,都是默认的就行(但是记住框出的文件目录,之后会有用 ),然后Finish完成项目创建。项目创建成功之后是要下载  jar 包到项目中的,但是,默认的下载路径是一个国外的下载网站,会比减慢,所以要配置下载路径,这时候就需要刚才的目录了,在刚才的目录下放入settings.xml,文件参考下载。文件放入如图目录实例:

        放入文件之后,在进入IDEA,等待下载完成就行了。

        那么问题来了,如果下载失败怎么办呢?

        下载失败没事,一般添加配置文件更改下载地址之后第一次容易出错,以后就不会了。鼠标放到项目名称上,右键  ----  Open In  ----  Explorer  ----  选中创建的项目删掉,然后关闭IDEA再重新进入,按照上边的过程再建立一个项目就可以了。第一次已经添加过,这时候并不需要再次添加配置文件,等待下载即可,下载完成后的界面如图:

        然后打开项目下的pom.xml文件,添加如下配置:

<dependency>
	<groupId>com.google.zxing</groupId>
	<artifactId>javase</artifactId>
	<version>3.3.3</version>
</dependency>

        保存文件,然后点击右上角的图标再次下载jar包,等待下载完成。

        然后就是开始创建java类,导包之类的了。

        创建java类的步骤就不多做描述了,新建Javaclass类Code,直接上图

        然后就是在Code 文件中写java代码了,先上代码:

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageConfig;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.CharacterSetECI;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

/**
 * QRCode工具类
 *
 * @author: GaoHuanjie
 */
public class Code {

    /**
     * 生成二维码
     *
     * @author GaoHuanjie
     *
     */
    public static boolean createQRCode(String content, int width, int height, int margin, String filePath,
                                       String fileName, String formatName) throws Exception {
        if (content == null || content.equals("")) {
            throw new Exception("二维码内容不能为空。");
        }
        // 二维码基本参数设置
        Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
        hints.put(EncodeHintType.CHARACTER_SET, CharacterSetECI.UTF8);// 设置编码字符集utf-8
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 设置纠错等级L/M/Q/H,当二维码被损毁一部分时,纠错等级越高,越可能读取成功;同样的,纠错等级越高,单位面积内点阵的点越多,机器扫描时,识别所需时间越长,当前设置等级为最高等级H
        hints.put(EncodeHintType.MARGIN, margin);// 可设置范围为0-10,但仅四个变化0 1(2) 3(4 5 6) 7(8 9 10)
        // 生成图片类型为QRCode
        BarcodeFormat format = BarcodeFormat.QR_CODE;
        // 创建位矩阵对象
        BitMatrix matrix = null;
        try {
            // 生成二维码对应的位矩阵对象
            matrix = new MultiFormatWriter().encode(content, format, width, height, hints);
        } catch (WriterException e) {
            e.printStackTrace();
        }
        // 设置位矩阵转图片的参数
        MatrixToImageConfig config = new MatrixToImageConfig(Color.black.getRGB(), Color.white.getRGB());
        // 位矩阵对象转BufferedImage对象
        BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(matrix, config);
        // 判断路径是否存在,不存在则创建
        File path = new File(filePath);
        if (!path.exists()) {
            path.mkdirs();
        }
        // 路径后补充斜杠
        if (filePath.lastIndexOf("\\") != filePath.length() - 1) {
            filePath = filePath + "\\";
        }
        // 二维码全路径
        filePath = filePath + fileName + "." + formatName;
        try {
            // 输出图片文件到指定位置
            return ImageIO.write(bufferedImage, formatName, new File(filePath));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }

    public static void main(String[] args) {
        String content = "https://image.baidu.com/search/detail?ct=503316480&z=&tn=baiduimagedetail&ipn=d&word=%E5%A3%81%E7%BA%B8&step_word=&ie=utf-8&in=&cl=2&lm=-1&st=-1&hd=undefined&latest=undefined&copyright=undefined&cs=2544377084,275372641&os=3052229399,834441112&simid=3533086814,586585425&pn=59&rn=1&di=72930&ln=3476&fr=&fmq=1526269427171_R&fm=&ic=0&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&is=0,0&istype=2&ist=&jit=&bdtype=0&spn=0&pi=0&gsm=0&objurl=https%3A%2F%2Fss0.baidu.com%2F-Po3dSag_xI4khGko9WTAnF6hhy%2Fzhidao%2Fpic%2Fitem%2F0e2442a7d933c895ca486665d51373f0820200fd.jpg&rpstart=0&rpnum=0&adpicid=0&nojc=undefined";//二维码内容
        int width = 888;//二维码宽度
        int height = 888;//二维码高度
        int margin = 3;//二维码边距

        String filePath = "D:\\";//二维码保存路径
        String fileName = "高清壁纸,你值得拥有!";//二维码文件名
        String formatName = "jpg";//二维码图片格式

        try {
            // 生成二维码
            if(createQRCode(content, width, height,margin,filePath, fileName, formatName)) {
                System.out.println("Yes");
                return;
            }
            System.out.println("No");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

         可以自己更改主函数的链接,可以改成网页链接或是网图都可以:

String content = "https://image.baidu.com/search/detail?ct=503316480&z=&tn=baiduimagedetail&ipn=d&word=%E5%A3%81%E7%BA%B8&step_word=&ie=utf-8&in=&cl=2&lm=-1&st=-1&hd=undefined&latest=undefined&copyright=undefined&cs=2544377084,275372641&os=3052229399,834441112&simid=3533086814,586585425&pn=59&rn=1&di=72930&ln=3476&fr=&fmq=1526269427171_R&fm=&ic=0&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&is=0,0&istype=2&ist=&jit=&bdtype=0&spn=0&pi=0&gsm=0&objurl=https%3A%2F%2Fss0.baidu.com%2F-Po3dSag_xI4khGko9WTAnF6hhy%2Fzhidao%2Fpic%2Fitem%2F0e2442a7d933c895ca486665d51373f0820200fd.jpg&rpstart=0&rpnum=0&adpicid=0&nojc=undefined";//二维码内容
        

        也可以改二维码文件的位置这里我设置的是D盘根目录:

 String filePath = "D:\\";//二维码保存路径

        还可以改二维码的名字与图片格式:

String fileName = "高清壁纸,你值得拥有!";//二维码文件名
String formatName = "jpg";//二维码图片格式

        有些同学这时候会出现错误,这是因为下载的包没有加载到文件中,这时候刷新就可以。

        按照图中的步骤,双击clean和compile就可以了。 

        右键  ----  Run  运行,之后就可以在D盘根目录下看到生成的二维码了。

        生成的二维码如图:

         之后就可以用手机扫描二维码,可以看到链接的内容。学会了就去试试吧

 

 

 

这篇关于使用IDEA创建一个通过url链接生成二维码的java程序|自动生成二维码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!