<img src="/cn-user/inviter-code-image.html?width=130&inviterCode=<s:property value="inviterURL"/>">

导包:

   <dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId></dependency>

使用教程:

    public String inviterCodeImage() {try {if (width <= 0) {width = 200;}var response = ServletActionContext.getResponse();///cn-user/inviter-code-image.html?width=130&inviterCode=https://www.medchemexpress.cn/integral-invitation-code-form.html?inviter-code=847231841027573182527186725995//inviterCode为二维码扫描内容 width为宽度byte[] bs = ImageUtils.createQRCodeImage(inviterCode, width);response.setHeader("Cache-Control", "no-store");response.setContentType("image/png");response.setContentLength(bs.length);response.getOutputStream().write(bs);} catch (Exception e) {e.printStackTrace();}return null;}

工具类:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import lombok.extern.slf4j.Slf4j;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import java.util.Map;@Slf4j
public class ImageUtils {public static final String FORMAT_JPG = "jpg";public static final String FORMAT_PDF = "pdf";public static final String FORMAT_PNG = "png";public static final String FORMAT_GIF = "gif";public static final String FORMAT_BMP = "bmp";private ImageUtils() {}/*** 图片压缩* @param maxWidth* @param maxHeight* @param bytes* @return*/public static byte[] thumbnail(int maxWidth, int maxHeight, byte[] bytes) {var imageBuffer = new ByteArrayInputStream(bytes);BufferedImage srcImage;try {srcImage = ImageIO.read(imageBuffer);} catch (Exception ignore) {return null; // impossible}int srcWidth = srcImage.getWidth();int srcHeight = srcImage.getHeight();int thumbnailWidth = maxWidth;int thumbnailHeight = maxHeight;if (srcWidth >= srcHeight) {thumbnailHeight = thumbnailWidth * srcHeight / srcWidth;} else {thumbnailWidth = thumbnailHeight * srcWidth / srcHeight;}var thumbnailImage = new BufferedImage(thumbnailWidth, thumbnailHeight, BufferedImage.TYPE_INT_RGB);var thumbnailGraphics = thumbnailImage.createGraphics();try {var scaledImage = srcImage.getScaledInstance(thumbnailWidth, thumbnailHeight, Image.SCALE_SMOOTH);thumbnailGraphics.drawImage(scaledImage, 0, 0, thumbnailWidth, thumbnailHeight, null);} finally {thumbnailGraphics.dispose();}try (var outBuffer = new ByteArrayOutputStream()) {ImageIO.write(thumbnailImage, "png", outBuffer);return outBuffer.toByteArray();} catch (Exception ignore) {return null; // impossible}}/*** 获取图片后缀* @param bytes* @param defaultFormat* @return*/public static String getImageFormatName(byte[] bytes, String defaultFormat) {try {var imageStream = ImageIO.createImageInputStream(new ByteArrayInputStream(bytes));var readerIterator = ImageIO.getImageReaders(imageStream);if (readerIterator.hasNext()) {var reader = readerIterator.next();var format = reader.getFormatName().toLowerCase();// 文件格式名参考 PNGImageReaderSpi,大体可用,只是 JPG 搞特殊,额外处理一下if ("jpeg".equals(format)) {format = FORMAT_JPG;}return format;}} catch (Exception ignore) {}return defaultFormat;}/*** 创建二维码图片* @param text* @param width* @return*/public static byte[] createQRCodeImage(String text, int width) {var hints = new HashMap<EncodeHintType, Object>();hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);hints.put(EncodeHintType.MARGIN, 0);return createQRCodeImage(text, width, hints);}/*** 创建二维码图片* @param text* @param width* @param 二维码图片微调参数* @return*/public static byte[] createQRCodeImage(String text, int width, Map<EncodeHintType, Object> hints) {try {var writer = new QRCodeWriter();@SuppressWarnings("SuspiciousNameCombination")var matrix = writer.encode(text, BarcodeFormat.QR_CODE, width, width, hints);var buffer = new ByteArrayOutputStream();MatrixToImageWriter.writeToStream(matrix, "PNG", buffer);return buffer.toByteArray();} catch (Exception e) {log.error("create qrcode image", e);return new byte[0];}}
}

java生成二维码以及链接邀请相关推荐

  1. java生成二维码(链接生成二维码)

    Java二维码如何生成? awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import com. ...

  2. java 生成二维码原理分析

    1.首先把java生成二维码的代码贴出来. public class QRCodeUtil { private static final Logger logger = LoggerFactory . ...

  3. JAVA生成二维码QRcode

    JAVA生成二维码QRcode 1 : 配置集成 1.1.配置maven 1.2.配置文件 1.3.logo文件 2 : 代码集成 2.1.加载配置文件 2.2.工具类 2.3.测试类 3 : 测试结 ...

  4. Java生成二维码并贴到新的图片上

    一.简述 1.Java生成二维码以来一些第三方库,本地的api会有一些bug,比如生成图片会造成红色蒙版,还有当二维码中字数过多,会造成二维码大小出现问题,要不就是二维码很大,要不就是二维码白边很大. ...

  5. java 生成二维码 QRCode、zxing 两种方式

    版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...

  6. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...

    二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api.   Zxing是Google提供的关于条码 ...

  7. java生成二维码打印到浏览器

    java生成二维码打印到浏览器 解决方法: pom.xml的依赖两个jar包: <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...

  8. Java生成二维码带LOGO底部标题竖版字体

    前言 Java后端生成二维码 底部 侧面带有标题,可调节字号 参考文章 使用Java生成二维码图片(亲测) Reborn_YY使用Java生成二维码图片 图标素材库 Java后台生成图片,前台实现图片 ...

  9. java生成二维码,并在前端展示。

    java生成二维码,并在前端展示,扫码实现下载功能. 后端生成二维码以流的形式 前端接收二维码并展示 后端生成二维码以流的形式 这是以流的形式展示二维码.当然也可以以文件的格式,文件格式就是Path ...

最新文章

  1. python二叉树深度 判断平衡树
  2. PLSQL导出表的数据insert语句
  3. Python使用文本拼图
  4. IT项目管理的十六个字心得体会
  5. python使用的一些小事儿
  6. Android开发笔记(九十五)自定义Drawable
  7. 中国料斗秤行业市场供需与战略研究报告
  8. 自己写的微信小程序炸金花简单版
  9. Aladdin and the Flying Carpet (唯一分解定理)
  10. spring-cloud-starter-bus-kafka利用kafka消息总线实现动态刷新配置
  11. 六度分离/HDOJ 1869
  12. js中的contains
  13. datafountain自然语言处理比赛的学习和总结
  14. java学习+JDK下载安装环境配置+IDEA安装下载简单使用
  15. 【xquic】ubuntu20.04: libevent ( Event notification library )构建
  16. MIPS指令集 指令的格式
  17. 找回压缩包密码难度大吗?
  18. 2020-7-13:记录足迹。西电计算机考研总结 优研计划夏令营
  19. 使用NetBeans 海康威视 SDK 二次开发
  20. SqlServer 索引及优化

热门文章

  1. Java初学者零基础分章学习后续
  2. LeetCode—5757. 矩阵中最大的三个菱形和(Get Biggest ...)[中等]—分析及代码(Java)
  3. 七段数码管的使用(使能端分时控制)
  4. 公司接了一个电商项目要在1个月内写10w行代码,该怎么搞定?
  5. 有才而性缓,有智而气和
  6. MobTech观察 | CSDN:企业数字化转型如何提升段位?杨冠军畅谈企业数字化前世今生
  7. 工业物联网创新方案亮相2018云栖大会
  8. java c HTML,javac html标签
  9. js设计模式之代理模式
  10. SpaceShooter打飞机教程笔记(二)