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. |