java功能实现 -- 二维码生成

需求

用户输入需要生成的二维码数量及相关信息,后台进行生成并打包后返回给用户。二维码示例如下:
在这里插入图片描述

思路

1.二维码生成及添加背景图;
2.将logo覆盖至生成的二维码上(注意大小不能超过10%,否则二维码可能无法识别);
3.添加编码的水印。

实现

借助工具类处理已有图片和相关操作

/**
	 * 生成二维码图片
	 * @param qrCodeOrderEntity
	 * @param qrCodeItemEntity
	 */
	public String genLabelPicture(QrCodeOrderEntity qrCodeOrderEntity, QrCodeItemEntity qrCodeItemEntity) {
		String picurl = fileUrl;
		try {
			// 生成二维码
			String twopath = filePath + qrCodeOrderEntity.getId() + "//" + qrCodeItemEntity.getId() + ".png";
			if (!FileUtil.isDirectory(twopath)) {
				FileUtil.mkParentDirs(twopath);
			}
			QRCodeUtil.encode(qrCodeItemEntity.getContent(), 914, 917, twopath, qrCodeOrderEntity.getLogo_url());
			/** begin--添加背景 **/
			String saveFilePath = filePath + qrCodeOrderEntity.getId() + "//" + qrCodeItemEntity.getId() + "1.png";
			NewImageUtils newImageUtils = new NewImageUtils();
			BufferedImage buffImg = NewImageUtils.watermark(new File(waterFilePath), new File(twopath), 140, 140, 1.0f);
			newImageUtils.generateWaterFile(buffImg, saveFilePath);
			// 删除原来的图片并重命名新的图片
			com.xakj.util.FileUtil.renameFile(filePath + qrCodeOrderEntity.getId(), qrCodeItemEntity.getId() + "1.png", qrCodeItemEntity.getId() + ".png");
			/** end--添加背景 **/
			
			/** begin--添加水印 **/
			Font font = new Font("微软雅黑", Font.PLAIN, 150); // 水印字体
			String waterMarkContent = qrCodeItemEntity.getId(); // 水印内容
			Color color = new Color(255, 255, 255, 255); // 水印图片色彩以及透明度
			new WaterMarkUtils().addWaterMark(twopath, saveFilePath, waterMarkContent, color, font);
			// 删除原来的图片并重命名新的图片
			com.xakj.util.FileUtil.renameFile(filePath + qrCodeOrderEntity.getId(), qrCodeItemEntity.getId() + "1.png", qrCodeItemEntity.getId() + ".png");
			/** end--添加水印 **/
		} catch (Exception e) {
			e.printStackTrace();
		}
		return picurl;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值