All Downloads are FREE. Search and download functionalities are using the official Maven repository.

win.hupubao.common.utils.QrCodeUtils Maven / Gradle / Ivy

Go to download

简单封装公共工具,二维码工具,驼峰转换工具,des加解密工具,http访问工具,字符串工具,日期工具

There is a newer version: 2.0.4
Show newest version
package win.hupubao.common.utils;

import com.google.zxing.*;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.apache.commons.codec.binary.Base64;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.regex.Pattern;

/**
 * @author Moses
 * @date 2017-08-09
 */
public class QrCodeUtils {

    private static final String ENCODING = "UTF-8";
    private static final Pattern PATTERN_BLANK = Pattern.compile("\\s*|\t|\r|\n");

    public static boolean base64ToImg(String base64, String filepath) {

        if (StringUtils.isBlank(base64)) {
            return false;
        }
        FileOutputStream out = null;


        base64 = StringUtils.replaceBlank(base64);
        try {
            out = new FileOutputStream(new File(
                    filepath));
            byte[] decoderBytes = Base64.decodeBase64(base64);
            out.write(decoderBytes);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return true;

    }

    /**
     * 解析二维码中链接值
     *
     * @param base64
     * @return
     */
    public static String parseQrCode(String base64) {
        String content = "";
        if (StringUtils.isBlank(base64)) {
            return content;
        }

        base64 = StringUtils.replaceBlank(base64);
        try {

            byte[] decoderBytes = Base64.decodeBase64(base64);

            ByteArrayInputStream in = new ByteArrayInputStream(decoderBytes);
            BufferedImage image = ImageIO.read(in);


            LuminanceSource source = new BufferedImageLuminanceSource(image);
            Binarizer binarizer = new HybridBinarizer(source);
            BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
            Map hints = new HashMap<>();
            hints.put(DecodeHintType.CHARACTER_SET, ENCODING);
            MultiFormatReader formatReader = new MultiFormatReader();
            Result result = formatReader.decode(binaryBitmap, hints);

            //设置返回值
            content = result.getText();

        } catch (NotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {

        }
        return content;

    }


    public static void main(String[] args) {
        System.out.println(createQrcode(300,300,"http://www.hupubao.win"));
    }

    /**
     * 创建二维码
     *
     * @param width
     * @param height
     * @param contents
     * @return
     */
    public static String createQrcode(int width,
                                      int height,
                                      String contents) {

        String format = "jpg";

        Hashtable hints = new Hashtable<>();
        // 指定纠错等级,纠错级别(L 7%、M 15%、Q 25%、H 30%)
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        // 内容所使用字符集编码
        hints.put(EncodeHintType.CHARACTER_SET, ENCODING);
//      hints.put(EncodeHintType.MAX_SIZE, 350);//设置图片的最大值
//      hints.put(EncodeHintType.MIN_SIZE, 100);//设置图片的最小值
        hints.put(EncodeHintType.MARGIN, 1);//设置二维码边的空度,非负数

        BitMatrix bitMatrix = null;
        try {
            bitMatrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE,
                    width,
                    height,
                    hints);
        } catch (WriterException e) {
            e.printStackTrace();
        }

        BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix);
        final ByteArrayOutputStream os = new ByteArrayOutputStream();

        try {
            ImageIO.write(bufferedImage, format, os);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return Base64.encodeBase64String(os.toByteArray());
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy