作者:手机用户2502887831 | 来源:互联网 | 2023-07-06 19:04
生成二维码图片
新建 Maven Project,引入依赖:
<dependency><groupId>com.google.zxinggroupId><artifactId>coreartifactId><version>3.3.0version>
dependency><dependency><groupId>com.google.zxinggroupId><artifactId>javaseartifactId><version>3.3.0version>
dependency>
新建 QrCodeUtils
工具类&#xff1a;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;import javax.imageio.ImageIO;import com.google.zxing.BarcodeFormat;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.EncodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
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.QRCodeWriter;public class QrCodeUtils {private static final BarcodeFormat BARCODE_FORMAT &#61; BarcodeFormat.QR_CODE;private static final QRCodeWriter qrCodeWriter &#61; new QRCodeWriter();private static final MultiFormatReader multiFormatReader &#61; new MultiFormatReader();public static BitMatrix encode(String contents, int width, int height, Map<EncodeHintType, Object> hints) throws WriterException {BitMatrix bitMatrix &#61; qrCodeWriter.encode(contents, BARCODE_FORMAT, width, height, hints);return bitMatrix;}public static Result decode(File input) throws IOException, NotFoundException {BufferedImage bufferedImage &#61; ImageIO.read(input);LuminanceSource luminanceSource &#61; new BufferedImageLuminanceSource(bufferedImage);Binarizer binarizer &#61; new HybridBinarizer(luminanceSource);BinaryBitmap binaryBitmap &#61; new BinaryBitmap(binarizer);Map<DecodeHintType, Object> hints &#61; new HashMap<DecodeHintType, Object>();hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");return multiFormatReader.decode(binaryBitmap, hints);}public static void writeToPah(BitMatrix matrix, String format, File file) throws IOException {MatrixToImageWriter.writeToPath(matrix, format, file.toPath());}public static void writeToPah(BitMatrix matrix, String format, Path file) throws IOException {MatrixToImageWriter.writeToPath(matrix, format, file);}public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) throws IOException {MatrixToImageWriter.writeToStream(matrix, format, stream);}
}
测试类&#xff1a;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;import com.google.zxing.EncodeHintType;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;public class Test {public static void main(String[] args) throws WriterException, IOException, NotFoundException {File file &#61; new File("二维码&#xff08;QrCode&#xff09;.png");String contents &#61; file.getName();Map<EncodeHintType, Object> hints &#61; new HashMap<EncodeHintType, Object>();hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.MARGIN, 1);BitMatrix bitMatrix &#61; QrCodeUtils.encode(contents, 800, 800, hints);QrCodeUtils.writeToPah(bitMatrix, "PNG", file);
Result result &#61; QrCodeUtils.decode(file); System.out.println(result.getText());}
}
生成的二维码图片位于项目根目录中&#xff1a;
![在这里插入图片描述](https://img8.php1.cn/3cdc5/154fe/ae9/687705e9cbefa4f4.png?x-oss-process&#61;image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI5NzYxMzk1,size_16,color_FFFFFF,t_70#pic_center)
控制台输出&#xff1a;
二维码&#xff08;QrCode&#xff09;.png
参考
Java实现二维码生成 Google-Zxing
Java识别二维码【工具类】