java生成二维码,自定义宽高和边框大小

java生成二维码,自定义宽高和边框大小下面封装的两个方法 url 地址是 http 开头的要不然浏览器没办法直接跳转宽高都是一个数 wh 边框 margin0 是没有边框 1 是最小边框返回值 BufferedImag 类型的数据 调用第二个方法 respImageBuf 下载到浏览器 paramurl 链接内容 paramwh 宽高 parammargin 边框大小 return publicBuffer

/ * @param url 链接内容 * @param wh 宽高 * @param margin 边框大小 * @return */ public BufferedImage qrCode(String url,Integer wh,Integer margin) { /* * 图片的宽度和高度 */ int width = Objects.isNull(wh)?300:wh;; int height = Objects.isNull(wh)?300:wh;; // 定义二维码的参数 HashMap 
  
    hints = new HashMap 
   
     (); // 定义字符集编码格式 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 纠错的等级 L > M > Q > H 纠错的能力越高可存储的越少,一般使用M hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); // 设置图片边距 hints.put(EncodeHintType.MARGIN,margin); BufferedImage bufferedImage = null; try { // 最终生成 参数列表 (1.内容 2.格式 3.宽度 4.高度 5.二维码参数) BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height, hints); bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix); } catch (Exception e) { new CustomException("二维码存储失败", 400); } return bufferedImage; } 
    
  

BufferedImage 类型的数据下载到浏览器

public void respImageBuffer(BufferedImage img,HttpServletResponse response){ try { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ImageOutputStream imageOutput= ImageIO.createImageOutputStream(byteArrayOutputStream); ImageIO.write(img,"png",imageOutput); ByteArrayInputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); long length = imageOutput.length(); //设置response response.setContentType("application/x-msdownload"); response.setContentLength((int)length); response.setHeader("Content-Disposition","attachment;filename=ercode.jpg"); //输出流 byte[] b = new byte[1024]; ServletOutputStream outputStream = response.getOutputStream(); long count = 0; while (count < length){ int len = inputStream.read(b, 0, 1024); count+=len; outputStream.write(b,0,len); } outputStream.flush(); }catch (Exception e){ throw new CustomException("生成二维码失败",400); } } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217642.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午9:06
下一篇 2026年3月18日 上午9:07


相关推荐

  • ASP.NET项目开发详解

    ASP.NET项目开发详解#ASP.NET项目开发详解###1ASP.NET开发基础####1.1认识网页和网站#####1.1.1网页#####1.1.2网站####1.2网站开发基础#####1.2

    2022年7月1日
    36
  • baq在聊天中啥意思_baq(网络用语baq啥意思)

    脑龄商数(brain-agequotient)更多释义>>[网络短语]baq块自适应量化,分块自适应量化(blockadaptivequantization),巴兰基亚baqbarranquilla巴兰基亚baq.BAQabbr.脑龄商数(brain-agequotient)应当是bag把,书包的意思BAQ,谁知道beijingassociationof…

    2022年4月4日
    628
  • ArrayList和LinkedList的区别、优缺点以及应用场景

    ArrayList和LinkedList的区别、优缺点以及应用场景ArrayList 和 LinkedList 都是实现了 List 接口的容器类 用于存储一系列的对象引用 他们都可以对元素的增删改查进行操作 那么他们区别 优缺点应用场景都有哪些呢 我们通过源码和数据结构来说明一下 ArrayList 和 LinkedList 的大致区别如下 ArrayList 是实现了基于动态数组的数据结构 LinkedList 是基于链表结构 对于随机访问的 get 和 set 方法 Array

    2026年3月18日
    2
  • IP地址分类(ABCDE)

    IP地址分类(ABCDE)文章目录 IP 地址分类 ABCDE A B C 三类及特殊 D E 全 0 和全 1 的都保留私有地址 IP 地址分类 ABCDE I 由网络地址和主机地址网络地址 其属于互联网的哪一个网络主机地址 属于该网络中的哪一台主机 IPv4 的长度 32 位 4 字节 A B C 三类及特殊 D E 全 0 和全 1 的都保留 A 1 0 0 0 126 0 0 0 默认子网掩码 255 0 0 0 网络号取

    2025年6月9日
    6
  • phpstorm 激活码生成(破解版激活)

    phpstorm 激活码生成(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    125
  • sqlyog13.1.6激活成功教程版_sqlyog10.0安装教程

    sqlyog13.1.6激活成功教程版_sqlyog10.0安装教程1、SQLyog-12.2.4-0.x64Trial.exe,直接去官网下载。2、修改注册表项开始-运行-regedit,进入注册表HKEY_CURRENT_USER\Software\SQLyog修改权限拒绝修改。OK,激活成功教程完成。试用14天一直可以使用下去转载于:https://www.cnblogs…

    2025年11月13日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号