Java tutorial
/** * Copyright 2010 Vstra Gtalandsregionen * * This library is free software; you can redistribute it and/or modify * it under the terms of version 2.1 of the GNU Lesser General Public * License as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA * */ package se.vgregion.mobile.qr; import java.io.IOException; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.google.zxing.BarcodeFormat; import com.google.zxing.Writer; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; /** * */ @Controller public class QrController { private final Logger log = LoggerFactory.getLogger(QrController.class); @RequestMapping("/qr") public void image(@RequestParam("url") String url, @RequestParam(value = "width", defaultValue = "300") int width, @RequestParam(value = "height", defaultValue = "300") int height, HttpServletResponse response) throws ServletException { OutputStream out = null; try { response.setContentType("image/png"); out = response.getOutputStream(); Writer writer = new QRCodeWriter(); BitMatrix matrix = writer.encode(url, BarcodeFormat.QR_CODE, width, height); MatrixToImageWriter.writeToStream(matrix, "png", out); out.flush(); } catch (WriterException e) { throw new ServletException("Failed writing QR", e); } catch (IOException e) { throw new ServletException("Failed writing QR", e); } finally { if (out != null) { try { out.close(); } catch (IOException e) { // ignore } } } } }