二维码生成

maven 依赖

<!-- http://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>

service

public byte[] qr(Item item) throws Exception {
        String content = commonProperties.getWxHost() + "/item/detail?id="
                + item.getId();

        int width = 250; // 图像宽度
        int height = 350; // 图像高度

        Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
        BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
                BarcodeFormat.QR_CODE, width, height, hints);// 生成矩阵

        int w = bitMatrix.getWidth();
        int h = bitMatrix.getHeight();
        BufferedImage image = new BufferedImage(w, h,
                BufferedImage.TYPE_INT_RGB);

        // 开始利用二维码数据创建Bitmap图片,分别设为黑白两色
        for (int x = 0; x < w; x++) {
            for (int y = 0; y < h; y++) {
                image.setRGB(x, y, bitMatrix.get(x, y) ? Color.BLACK.getRGB()
                        : Color.WHITE.getRGB());
            }
        }
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        String format = "png"; 
        watermark("库存:" + item.getWarehouse_no(), image, 10);
        watermark("标题:" + item.getTitle(), image, 40);
        ImageIO.write(image, format, baos);
        return baos.toByteArray();
    }

controller

@RequestMapping(value = "/exportQR", method = RequestMethod.GET)
    public void exportQR(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        String id = request.getParameter("id");
        Item item = itemService.get(id);//生成的内容
        // create qr
        response.setStatus(HttpServletResponse.SC_OK);
        response.setContentType("image/png");
        response.setHeader("Cache-Control", "max-age=2592000");
        OutputStream outputStream = response.getOutputStream();
        outputStream.write(this.barCodeService.qr(item));
        outputStream.flush();
        IOUtils.closeQuietly(outputStream);

    }

页面引用

<pre><img style="-webkit-user-select: none" src="http://localhost:8080/mp/item/exportQR?id=13ab17372d1d11e6839e97362d2b99f1"></pre>

最终效果
二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值