ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-07-15 20:59:54  阅读:186  来源: 互联网

标签:java String filePath 生成 二维码 import com undefined


        平时使用了那么多的二维码,今天我们自己做一个二维码。今天刚安装了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盘根目录下看到生成的二维码了。

        生成的二维码如图:

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

 

 

 

标签:java,String,filePath,生成,二维码,import,com,undefined
来源: https://blog.csdn.net/m0_53197131/article/details/118767238

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有