java生成二维码以及链接邀请
<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生成二维码以及链接邀请相关推荐
- java生成二维码(链接生成二维码)
Java二维码如何生成? awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import com. ...
- java 生成二维码原理分析
1.首先把java生成二维码的代码贴出来. public class QRCodeUtil { private static final Logger logger = LoggerFactory . ...
- JAVA生成二维码QRcode
JAVA生成二维码QRcode 1 : 配置集成 1.1.配置maven 1.2.配置文件 1.3.logo文件 2 : 代码集成 2.1.加载配置文件 2.2.工具类 2.3.测试类 3 : 测试结 ...
- Java生成二维码并贴到新的图片上
一.简述 1.Java生成二维码以来一些第三方库,本地的api会有一些bug,比如生成图片会造成红色蒙版,还有当二维码中字数过多,会造成二维码大小出现问题,要不就是二维码很大,要不就是二维码白边很大. ...
- java 生成二维码 QRCode、zxing 两种方式
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...
- 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...
二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api. Zxing是Google提供的关于条码 ...
- java生成二维码打印到浏览器
java生成二维码打印到浏览器 解决方法: pom.xml的依赖两个jar包: <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...
- Java生成二维码带LOGO底部标题竖版字体
前言 Java后端生成二维码 底部 侧面带有标题,可调节字号 参考文章 使用Java生成二维码图片(亲测) Reborn_YY使用Java生成二维码图片 图标素材库 Java后台生成图片,前台实现图片 ...
- java生成二维码,并在前端展示。
java生成二维码,并在前端展示,扫码实现下载功能. 后端生成二维码以流的形式 前端接收二维码并展示 后端生成二维码以流的形式 这是以流的形式展示二维码.当然也可以以文件的格式,文件格式就是Path ...
最新文章
- python二叉树深度 判断平衡树
- PLSQL导出表的数据insert语句
- Python使用文本拼图
- IT项目管理的十六个字心得体会
- python使用的一些小事儿
- Android开发笔记(九十五)自定义Drawable
- 中国料斗秤行业市场供需与战略研究报告
- 自己写的微信小程序炸金花简单版
- Aladdin and the Flying Carpet (唯一分解定理)
- spring-cloud-starter-bus-kafka利用kafka消息总线实现动态刷新配置
- 六度分离/HDOJ 1869
- js中的contains
- datafountain自然语言处理比赛的学习和总结
- java学习+JDK下载安装环境配置+IDEA安装下载简单使用
- 【xquic】ubuntu20.04: libevent ( Event notification library )构建
- MIPS指令集 指令的格式
- 找回压缩包密码难度大吗?
- 2020-7-13:记录足迹。西电计算机考研总结 优研计划夏令营
- 使用NetBeans 海康威视 SDK 二次开发
- SqlServer 索引及优化
热门文章
- Java初学者零基础分章学习后续
- LeetCode—5757. 矩阵中最大的三个菱形和(Get Biggest ...)[中等]—分析及代码(Java)
- 七段数码管的使用(使能端分时控制)
- 公司接了一个电商项目要在1个月内写10w行代码,该怎么搞定?
- 有才而性缓,有智而气和
- MobTech观察 | CSDN:企业数字化转型如何提升段位?杨冠军畅谈企业数字化前世今生
- 工业物联网创新方案亮相2018云栖大会
- java c HTML,javac html标签
- js设计模式之代理模式
- SpaceShooter打飞机教程笔记(二)