java实现二维码

2022-08-03 10:45:24

准备工作

  1. 导入core的jar包或者加入依赖在maven工程中
<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.0</version></dependency>
  1. 理解io流相关知识
  2. 理解java面向对象
  3. 理解集合的使用
  4. 理解ImageIO流输出图片

代码实现

publicclassTestMain{publicstaticvoidgetQRCode()throws Exception{//需要创建一个对象 可以帮我们处理二维码(相当于一个输出流)
        QRCodeWriter qrCodeWriter=newQRCodeWriter();
        String contents="晖哥真帅!";//必然需要条件--->  1.内容 2.类型二维码 3.宽度 4.高度 5.其他信息(字符集 纠错等级 边距留白)//类型(二维码)
        BarcodeFormat qrCodeType= BarcodeFormat.QR_CODE;//用来存储其他信息
        HashMap map=newHashMap();//设置字符集为UTF-8
        map.put(EncodeHintType.CHARACTER_SET,"UTF-8");//容错级别(L,M,Q,H)L为最低级别,当遮住百分之7的二维码可以被识别恢复,H为最高级别,当遮住百分之30可以被识别恢复//级别不是越高越好,级别越高该二维码存储的信息则越少,级别越低,存储的信息则越多
        map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);//设置二维码的边框为2像素
        map.put(EncodeHintType.MARGIN,2);//(通过输出流的encode方法,传入二维码存储的内容信息,码的类型,宽度,高度,和集合设置的其他信息)//生成一个二维码对象,具有二维矩阵模型的数值
        BitMatrix bitMatrix= qrCodeWriter.encode(contents,qrCodeType,600,600, map);//将二维码对象构建成内存中的图片对象(通过类型为RBG来构建)
        BufferedImage bufferedImage=newBufferedImage(bitMatrix.getWidth(),bitMatrix.getHeight(),BufferedImage.TYPE_INT_RGB);int getBlack= Color.black.getRGB();int getWrite=Color.white.getRGB();//通过设置颜色和宽度、长度将二维码图片对象构建出来for(int x=0; x<bitMatrix.getWidth(); x++){for(int y=0; y<bitMatrix.getHeight(); y++){//如果bitMatrix对应的x,y存在值则返回true画黑色,否则画白色(三目运算判断)
                bufferedImage.setRGB(x, y, bitMatrix.get(x, y)? getBlack: getWrite);}}//将二维码图片对象写入文件(图片流对象,图片类型,文件存放的位置)
        ImageIO.write(bufferedImage,"jpg",newFile("src/qrcode/QRCode.jpg"));}publicstaticvoidmain(String[] args){try{//调用
            TestMain.getQRCode();}catch(Exception e){
            e.printStackTrace();}}}
  • 作者:chenhui_Sun
  • 原文链接:https://blog.csdn.net/weixin_45608165/article/details/111997493
    更新时间:2022-08-03 10:45:24