Java QR Code Generator – zxing exempel

En QR-kod, eller Quick Response-kod, är en tvådimensionell streckkod som rymmer en mängd olika data. Detta inkluderar text, webbadresser, kontaktuppgifter och mycket mer. Under de senaste åren har QR-koder blivit alltmer omtyckta för sin enkelhet och mångsidighet vid informationslagring och delning.

Det finns flera verktyg för att skapa dessa koder, och ett av dem är zxing. Zxing är ett open source-bibliotek som erbjuder ett brett utbud av funktioner för att generera och avkoda QR-koder. I den här artikeln utforskar vi hur man använder zxing i Java för att framställa QR-koder.

1. Integrera zxing i ditt projekt

Inledningsvis behöver du lägga till zxing som ett beroende i ditt Java-projekt. Det gör du enkelt genom att inkludera följande rad i din pom.xml-fil:


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

2. Generera en QR-kod

För att generera en QR-kod med zxing kan du använda nedanstående Java-kod:


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 {
    // Data som ska kodas
    String content = "https://example.com";

    // Skapa en instans av QRCodeWriter
    QRCodeWriter qrCodeWriter = new QRCodeWriter();

    // Konfigurera kodningsinställningar
    Map<EncodeHintType, Object> hints = new HashMap<>();
    hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
    hints.put(EncodeHintType.MARGIN, 2);

    // Skapa en bitmatris för QR-koden
    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 som en PNG-fil
    Files.write(Paths.get("qr-code.png"), (byte[]) image.getData().getData());
  }
}

Denna kod skapar en QR-kod som innehåller webbadressen ”https://example.com” och sparar den som en PNG-fil.

3. Anpassa QR-koden

Med zxing kan du skräddarsy dina QR-koder genom att justera olika parametrar. Dessa inkluderar:

  • Felkorrigeringsnivå: Bestämmer graden av felkorrigering i QR-koden. Högre nivåer möjliggör återställning av mer data vid skada.
  • Marginal: Styr marginalen runt själva QR-koden.
  • Mask: En mask används för att förbättra läsbarheten av koden.

4. Läsa QR-koder

Zxing är inte bara för att generera, utan kan också avkoda QR-koder. Följande kod illustrerar hur man läser en QR-kod:


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-kodsbilden
    BufferedImage image = ImageIO.read(new File("qr-code.png"));

    // Skapa en binär bitmap
    BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));

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

    // Avkoda QR-koden
    Result result = multiFormatReader.decode(binaryBitmap);

    // Extrahera innehållet
    String content = result.getText();

    // Skriv ut innehållet
    System.out.println(content);
  }
}

Denna kod läser QR-koden som genererades tidigare och visar dess innehåll.

Slutsats

Zxing är ett kraftfullt och mångsidigt bibliotek för att hantera QR-koder i Java. Denna genomgång har täckt generering och avkodning av QR-koder, samt anpassning av kodens utseende. Det är ett utmärkt verktyg för utvecklare som behöver integrera QR-kodfunktionalitet i sina applikationer. Biblioteket är väl dokumenterat och stöder ett brett spektrum av funktioner, vilket gör det till ett populärt val.

Vanliga Frågor

1. Vad är en QR-kod?

En QR-kod är en tvådimensionell streckkod som kan lagra olika typer av information, som text, webbadresser och kontaktinformation.

2. Vad är zxing?

Zxing är ett open source-bibliotek för att skapa och avkoda streckkoder, inklusive QR-koder.

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

Använd klassen QRCodeWriter i zxing för att generera en QR-kod. Du kan anpassa utseendet genom att ändra kodningsinställningarna.

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

Använd klassen MultiFormatReader för att avkoda en QR-kod från en bild.

5. Kan jag justera felkorrigeringsnivån?

Ja, du kan justera felkorrigeringsnivån med hjälp av EncodeHintType.ERROR_CORRECTION.

6. Kan jag justera marginalen?

Ja, marginalen ställs in med EncodeHintType.MARGIN.

7. Kan jag ändra masken?

Ja, du kan ange masken med EncodeHintType.MASK.

8. Var kan jag hitta mer information om zxing?

Du kan hitta mer information i zxings dokumentation, på deras webbplats eller i deras communityforum.