Présentation
ZXing est une bibliothèque Java open source permettant d'analyser des codes-barres 1D/2D dans plusieurs formats. L'objectif est de pouvoir décoder les codes-barres 1D de l'encodage QR, Data Matrix et UPC. Il fournit des clients sur plusieurs plateformes, notamment : J2ME, J2SE et Android.
Combat pratique
Cet exemple montre comment utiliser ZXing pour générer et analyser des images de code QR dans un projet Java non Android.
Installation
Le projet Maven n'a besoin que d'introduire des dépendances :
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.0</version> </dependency>
Générer une image de code QR
ZXing suit les étapes suivantes pour générer une image de code QR :
1.com.google.zxing.MultiFormatWriter génère une matrice d'image 2D basée sur les paramètres de contenu et d'encodage de l'image.
2. com.google.zxing.client.j2se.MatrixToImageWriter génère des fichiers image ou un cache d'image BufferedImage basé sur la matrice d'image.
public void encode(String content, String filepath) throws WriterException, IOException { int width = 100; int height = 100; Map<EncodeHintType, Object> encodeHints = new HashMap<EncodeHintType, Object>(); encodeHints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, encodeHints); Path path = FileSystems.getDefault().getPath(filepath); MatrixToImageWriter.writeToPath(bitMatrix, "png", path); }
Analyse des images de code QR
ZXing comporte les étapes suivantes pour analyser les images de code QR :
1. Utilisez javax.imageio.ImageIO. Lisez le fichier image et enregistrez-le en tant qu'objet java.awt.image.BufferedImage.
2. Convertissez java.awt.image.BufferedImage en un objet com.google.zxing.BinaryBitmap que ZXing peut reconnaître.
3.com.google.zxing.MultiFormatReader analyse com.google.zxing.BinaryBitmap en fonction des paramètres de décodage d'image.
public String decode(String filepath) throws IOException, NotFoundException { BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filepath)); LuminanceSource source = new BufferedImageLuminanceSource(bufferedImage); Binarizer binarizer = new HybridBinarizer(source); BinaryBitmap bitmap = new BinaryBitmap(binarizer); HashMap<DecodeHintType, Object> decodeHints = new HashMap<DecodeHintType, Object>(); decodeHints.put(DecodeHintType.CHARACTER_SET, "UTF-8"); Result result = new MultiFormatReader().decode(bitmap, decodeHints); return result.getText(); }
Ce qui suit est un exemple d'image de code QR générée :
C'est tout pour cet article, j'espère que tout le contenu sera utile à l'apprentissage de chacun, et j'espère également que tout le monde soutiendra le site Web PHP chinois.
Pour plus d'articles connexes sur de petits exemples de génération et d'analyse d'images de code QR en Java, veuillez faire attention au site Web PHP chinois !