Java QR Code Generator – zxing exempel

Java QR-kodgenerator – zxing-exempel

Ett QR-kod (Quick Response-kod) är en tvådimensionell streckkod som kan lagra data över en mängd olika format, inklusive text, URL, kontaktinformation och mycket mer. QR-koder har blivit alltmer populära de senaste åren, eftersom de är ett bekvämt och enkelt sätt att lagra och dela information.

Det finns ett antal olika QR-kodgeneratorer tillgängliga, varav en är zxing. Zxing är ett öppen källkodsbibliotek som tillhandahåller en omfattande uppsättning verktyg för att skapa och läsa QR-koder. I den här artikeln kommer vi att titta närmare på hur man använder zxing för att generera QR-koder i Java.

1. Lägga till zxing-beroendet

Det första steget är att lägga till zxing-beroendet i ditt Java-projekt. Du kan göra detta genom att lägga till följande rad i din pom.xml-fil:

xml
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.5.0</version>
</dependency>

2. Skapa en ny QR-kod

För att generera en ny QR-kod med zxing kan du använda följande kod:

java
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;

public class QrCodeGenerator {

public static void main(String[] args) throws WriterException, IOException {
// Innehållet som ska kodas
String content = "https://example.com";

// Skapa en ny QR-kodskrivare
QRCodeWriter qrCodeWriter = new QRCodeWriter();

// Ställ in kodningsparametrarna
Map<EncodeHintType, Object> hints = new HashMap<>();
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
hints.put(EncodeHintType.MARGIN, 2);

// Generera QR-kodens bitmatris
BitMatrix bitMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, 350, 350, hints);

// Skapa en bild från bitmatrisen
BufferedImage image = new BufferedImage(bitMatrix.getWidth(), bitMatrix.getHeight(), BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < bitMatrix.getWidth(); x++) {
for (int y = 0; y < bitMatrix.getHeight(); y++) {
image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
}
}

// Spara bilden till fil
Files.write(Paths.get("qr-code.png"), image.getData());
}
}

Den här koden genererar en QR-kod som innehåller texten ”https://example.com”. QR-koden sparas sedan som en PNG-fil.

3. Anpassa QR-koden

Du kan anpassa QR-koden som genereras av zxing genom att ange olika kodningsparametrar. Följande parametrar är tillgängliga:

* Felkorrigeringsnivå: Anger hur mycket felkorrigering som ska användas i QR-koden. Ju högre felkorrigeringsnivå, desto mer data kan återställas om QR-koden skadas.
* Margin: Anger marginalen runt QR-koden.
* Mask: Anger masken som ska användas för att skapa QR-koden. Masker används för att förbättra QR-kodens läsbarhet.

4. Läsa en QR-kod

除了生成 QR 码之外,Zxing 还可以用来读取 QR 码。您可以使用以下代码来读取 QR 码:

java
import com.google.zxing.BinaryBitmap;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class QrCodeReader {

public static void main(String[] args) throws IOException, NotFoundException {
// Läs in QR-kodbilden
BufferedImage image = ImageIO.read(new File("qr-code.png"));

// Skapa en binär bitmapp från bilden
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));

// Skapa en multiclient
MultiFormatReader multiFormatReader = new MultiFormatReader();

// Läs QR-koden
Result result = multiFormatReader.decode(binaryBitmap);

// Hämta QR-kodens innehåll
String content = result.getText();

// Skriv ut QR-kodens innehåll
System.out.println(content);
}
}

Den här koden läser QR-koden som skapades i föregående avsnitt och skriver ut dess innehåll.

Slutsats

Zxing är ett kraftfullt och mångsidigt bibliotek som kan användas för att generera och läsa QR-koder i Java. I den här artikeln har vi tittat på hur man använder zxing för att generera anpassade QR-koder och hur man läser QR-koder från bilder.

Zxing är ett utmärkt val för Java-utvecklare som behöver arbeta med QR-koder. Biblioteket är väldokumenterat och stöder ett brett utbud av funktioner.

Vanliga frågor

1. Vad är en QR-kod?

En QR-kod är en tvådimensionell streckkod som kan lagra data över en mängd olika format, inklusive text, URL, kontaktinformation och mycket mer.

2. Vad är zxing?

Zxing är ett öppen källkodsbibliotek som tillhandahåller en omfattande uppsättning verktyg för att skapa och läsa QR-koder.

3. Hur genererar jag en QR-kod med zxing?

Du kan generera en QR-kod med zxing genom att använda QRCodeWriter-klassen. Du kan ställa in olika kodningsparametrar för att anpassa QR-koden.

4. Hur läser jag en QR-kod med zxing?

Du kan läsa en QR-kod med zxing genom att använda MultiFormatReader-klassen. Du kan läsa in en QR-kodbild och använda MultiFormatReader för att tolka den.

5. Kan jag ange felkorrigeringsnivån för en QR-kod som genereras med zxing?

Ja, du kan ange felkorrigeringsnivån för en QR-kod som genereras med zxing genom att använda EncodeHintType.ERROR_CORRECTION.

6. Kan jag ange marginalen för en QR-kod som genereras med zxing?

Ja, du kan ange marginalen för en QR-kod som genereras med zxing genom att använda EncodeHintType.MARGIN.

7. Kan jag ange masken för en QR-kod som genereras med zxing?

Ja, du kan ange masken för en QR-kod som genereras med zxing genom att använda EncodeHintType.MASK.

8. Finns det några ytterligare resurser för att lära sig mer om zxing?

Ja, det finns ett antal ytterligare resurser för att lära sig mer om zxing, inklusive zxing-dokumentationen, zxing-webbplatsen och zxing-communityforumet.