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.