Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

How to Create a QR Code SVG Using Zxing and JFreeSVG in Java? [Snippet]

DZone 's Guide to

How to Create a QR Code SVG Using Zxing and JFreeSVG in Java? [Snippet]

Create your own QR Code SVG image in Java using the Zxing code generation library.

· Java Zone ·
Free Resource

In this article, we will look at how to use the Zxing QR code generation library and JFreeSVG library to create a QR Code SVG image in Java.

QR Code Generation

The below code creates a java.awt.image.BufferedImage object representing QR Code using Zxing library:

public static BufferedImage getQRCode(String targetUrl, int width, 
    int height) {
    try {
        Hashtable<EncodeHintType, Object> hintMap = new Hashtable<>();

        hintMap.put(EncodeHintType.ERROR_CORRECTION, 
            ErrorCorrectionLevel.L);
        QRCodeWriter qrCodeWriter = new QRCodeWriter();
        BitMatrix byteMatrix = qrCodeWriter.encode(targetUrl, 
            BarcodeFormat.QR_CODE, width, height, hintMap);
        int CrunchifyWidth = byteMatrix.getWidth();

        BufferedImage image = new BufferedImage(CrunchifyWidth, 
            CrunchifyWidth, BufferedImage.TYPE_INT_RGB);
        image.createGraphics();

        Graphics2D graphics = (Graphics2D) image.getGraphics();
        graphics.setColor(Color.WHITE);
        graphics.fillRect(0, 0, CrunchifyWidth, CrunchifyWidth);
        graphics.setColor(Color.BLACK);

        for (int i = 0; i < CrunchifyWidth; i++) {
            for (int j = 0; j < CrunchifyWidth; j++) {
                if (byteMatrix.get(i, j)) {
                    graphics.fillRect(i, j, 1, 1);
                }
            }
        }
        return image;
    } catch (WriterException e) {
        e.printStackTrace();
        throw new RuntimeException("Error getting QR Code");
    }

}


Conversion to SVG

The below code snippet converts the java.awt.image.BufferedImage object into SVG using JFreeSVG:

public static String getQRCodeSvg(String targetUrl, int width, 
    int height, boolean withViewBox){
    SVGGraphics2D g2 = new SVGGraphics2D(width, height);
    BufferedImage qrCodeImage = getQRCode(targetUrl, width, height);
    g2.drawImage(qrCodeImage, 0,0, width, height, null);

    ViewBox viewBox = null;
    if ( withViewBox ){
        viewBox = new ViewBox(0,0,width,height);
    }
    return g2.getSVGElement(null, true, viewBox, null, null);
}


The complete code can be found here.

Topics:
java ,snippet ,qr code ,java tutorial ,qr code svg ,svg ,zxing ,jfreesvg

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}