java如何生成二维码并且给二维码添加logo
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章主要介绍java如何生成二维码并且给二维码添加logo,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!java生成二维码,具体代码如下所示:package com.bus
千家信息网最后更新 2025年11月16日java如何生成二维码并且给二维码添加logo
这篇文章主要介绍java如何生成二维码并且给二维码添加logo,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
java生成二维码,具体代码如下所示:
package com.bus.wx.action.code;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.geom.RoundRectangle2D;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Hashtable;import java.util.Map;import javax.imageio.ImageIO;import javax.servlet.ServletOutputStream;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import com.bus.plugin.wx.action.WxAction;import com.bus.wx.util.Limits;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatWriter;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.QRCodeWriter;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;import com.lys.sys.log.Log;/** * 条形码、二维码 * @author hwj * */@Scope(value = "prototype")@Controller("Bar_Qr_Code_Action")@RequestMapping(value="plug/wx/wwz/{bcflag}/barqrcode")public class Bar_Qr_Code_Action extends WxAction{ private static final int LogoPart = 4; private static final int BLACK = 0xFF000000;//用于设置图案的颜色 private static final int WHITE = 0xFFFFFFFF; //用于背景色 String format = "png";public static BufferedImage toBufferedImage(BitMatrix matrix) { int width = matrix.getWidth(); int height = matrix.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { image.setRGB(x, y, (matrix.get(x, y) ? BLACK : WHITE)); // image.setRGB(x, y, (matrix.get(x, y) ? Color.YELLOW.getRGB() : Color.CYAN.getRGB())); } } return image; } public BufferedImage LogoMatrix(BufferedImage matrixImage) throws IOException{ /** * 读取二维码图片,并构建绘图对象 */ Graphics2D g2 = matrixImage.createGraphics(); int matrixWidth = matrixImage.getWidth(); int matrixHeigh = matrixImage.getHeight(); /** * 读取Logo图片 */ String path=request.getSession().getServletContext().getRealPath("/images/logo/dzjkklog.png"); BufferedImage logo = ImageIO.read(new File(path)); //开始绘制图片 g2.drawImage(logo,matrixWidth/5*2,matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5, null);//绘制 BasicStroke stroke = new BasicStroke(5,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND); g2.setStroke(stroke);// 设置笔画对象 //指定弧度的圆角矩形 RoundRectangle2D.Float round = new RoundRectangle2D.Float(matrixWidth/5*2, matrixHeigh/5*2, matrixWidth/5, matrixHeigh/5,20,20); g2.setColor(Color.white); g2.draw(round);// 绘制圆弧矩形 //设置logo 有一道灰色边框 BasicStroke stroke2 = new BasicStroke(1,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND); g2.setStroke(stroke2);// 设置笔画对象 RoundRectangle2D.Float round2 = new RoundRectangle2D.Float(matrixWidth/5*2+2, matrixHeigh/5*2+2, matrixWidth/5-4, matrixHeigh/5-4,20,20); g2.setColor(new Color(128,128,128)); g2.draw(round2);// 绘制圆弧矩形 g2.dispose(); matrixImage.flush() ; return matrixImage ; } /** * 生成二维码:直接将生成的二维码传输到前台页面 * @param bcflag */ @RequestMapping(value="createQrCodes",method = RequestMethod.GET) public void createQrCodes(@PathVariable String bcflag,String dastid){ String url="扫二维码出现的内容"; if(url!=null&&!"".equals(url)){ ServletOutputStream stream=null; try { int width=430; int height=430; stream=response.getOutputStream(); QRCodeWriter writer=new QRCodeWriter(); Hashtable hints = new Hashtable(); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.MARGIN, 1);//设置二维码边的空度,非负数 BitMatrix bitMatrix = new MultiFormatWriter().encode(url,//要编码的内容 BarcodeFormat.QR_CODE, width, //条形码的宽度 height, //条形码的高度 hints); //BitMatrix m=writer.encode(url, BarcodeFormat.QR_CODE, height,width); BufferedImage image = toBufferedImage(bitMatrix); image = LogoMatrix(image); if (!ImageIO.write(image, format, stream)) { throw new IOException("Could not write an image of format " + format); } } catch (Exception e) { Log.in.info(e.getMessage()); }finally{ if(stream!=null){ try { stream.flush(); stream.close(); } catch (IOException e) { Log.in.info(e.getMessage()); } } } } }} 以上是"java如何生成二维码并且给二维码添加logo"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
二维
二维码
生成
内容
图片
对象
条形
条形码
矩形
圆弧
笔画
篇文章
一道
代码
价值
兴趣
前台
图案
圆角
宽度
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器安装到机柜
将网络安全视为
成都局网络安全考试题
滨州crm管理软件开发
数据库程序通过什么访问数据库
网络安全一票否决制
质量网络技术创新服务
栾城软件开发初级教材教学视频
网络安全四大
软件开发项目简历java
小潮的服务器
ibm服务器硬盘分区
数据网络安全
oralce数据库官网下载
网络安全设备厂家供应
甘肃智慧医养软件开发公司
网络安全责任任命书
主流的关系数据库种类
英雄联盟台湾服务器
在网络技术领域中
电脑生存服务器推荐
网络大数据与网络安全培训
中国数据库软件公司排名
工倍部网络安全管理局
吕梁政务软件开发
c web连接数据库
怎么看服务器地址
数据库rowid排序
请假条模板软件开发
网络安全生态新优势研讨