Core Java
How to create a QR Code SVG using Zxing and JFreeSVG in Java?
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 object representing QR Code using Zxing library:java.awt.image.BufferedImage
1 | 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 object into SVG using JFreeSVG:java.awt.image.BufferedImage
1 | 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.
Published on Java Code Geeks with permission by Mohamed Sanaulla, partner at our JCG program. See the original article here: How to create a QR Code SVG using Zxing and JFreeSVG in Java? Opinions expressed by Java Code Geeks contributors are their own. |

