java如何生成二维码并且给二维码添加logo
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍java如何生成二维码并且给二维码添加logo,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!java生成二维码,具体代码如下所示:package com.bus
千家信息网最后更新 2026年11月04日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安全错误
数据库的锁怎样保障安全
互联网佳科技有限公司
互联网扶贫科技
美国互联网科技
互联网科技公司官网
深圳齐家互联网科技
广州善班互联网科技
博兴的互联网电子科技公司
小米互联网科技园设置
常德市电业局互联网科技部
广州恒生互联网科技有限
互联网新科技动漫ppt素材
中科明德北京互联网科技
国大互联网教育科技有限公司薪资
银行科技岗属于互联网吗
互联网科技股为什么大涨
互联网科技手机排行榜
中国新注册互联网科技
马化腾互联网科技教学
宁波允成互联网科技有限公司
互联网 科技节活动 微视频大赛
互联网科技
互联网科技工作委员会
鸠鸠互联网科技
北京华百购互联网科技有限公司
本届互联网博览会上的黑科技
允成互联网科技有限公司融资
银行科技岗属于互联网吗
互联网科技接地气
互联网科技大会大佬
上海互联网科技园景观