·1生成带logo的二维码,并转base64

public static String generateBase64Img(String code_url,int width,int height,String format,String logopath) throws WriterException, IOException {if(StringUtil.isEmpty(format)) {format = "png";}Hashtable hints = new Hashtable();hints.put(EncodeHintType.CHARACTER_SET, "utf-8");/** 设置容错级别,默认为ErrorCorrectionLevel.L* 因为中间加入logo所以建议你把容错级别调至H,否则可能会出现识别不了*/hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);//设置空白边距的宽度hints.put(EncodeHintType.MARGIN, 1); //default is 4//生成矩阵BitMatrix bitMatrix = new MultiFormatWriter().encode(code_url, BarcodeFormat.QR_CODE, width, height, hints);  ByteArrayOutputStream bos = new ByteArrayOutputStream();//转图片BufferedImage bufferedImage = toBufferedImage(bitMatrix,logopath);ImageIO.write(bufferedImage, format, bos);byte[] binary = bos.toByteArray();return Base64.encodeBase64String(binary);}/*** matrix转为二维码图片,如果有logo文件,则生成带logo的二维码* @param matrix* @return* @author Mr G* @throws IOException */public static BufferedImage toBufferedImage(BitMatrix matrix,String logopath) throws IOException {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) ? 0xFF000000 : 0xFFFFFFFF);}}image.flush();if(!StringUtil.isEmpty(logopath)) {File logFile = new File(logopath);if(logFile!=null && logFile.exists()) {//读取logo图片BufferedImage logo = ImageIO.read(logFile);//绘制logoBufferedImage logoMatrix = LogoMatrix(image, logo);return logoMatrix;}}return image;}/*** 设置 logo* @param matrixImage 源二维码图片* @return 返回带有logo的二维码图片* @throws IOException* @author MR G*/public static BufferedImage LogoMatrix(BufferedImage matrixImage, BufferedImage logo) throws IOException{/*** 读取二维码图片,并构建绘图对象*/Graphics2D g2 = matrixImage.createGraphics();int matrixWidth = matrixImage.getWidth();int matrixHeigh = matrixImage.getHeight();//开始绘制图片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,0,0);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.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); matrixImage.flush() ;g2.dispose();return matrixImage ;}

2如果不带logo,那就简单了:

/*** 生成图片* @param code_url 二维码地址* @param response* @param width* @param height* @param format 图片格式eg: jpg、png* @throws Exception* @author Mr G*/@SuppressWarnings({ "rawtypes", "unchecked" })public static String generateBase64(String code_url, int width,int height,String format) throws Exception {if(StringUtil.isEmpty(format)) {format = "png";}Hashtable hints = new Hashtable();hints.put(EncodeHintType.CHARACTER_SET, "utf-8");BitMatrix bitMatrix = new MultiFormatWriter().encode(code_url, BarcodeFormat.QR_CODE, width, height, hints);  ByteArrayOutputStream bos = new ByteArrayOutputStream();MatrixToImageWriter.writeToStream(bitMatrix, format, bos);byte[] binary = bos.toByteArray();return  ImgUtil.toBase64(binary);}

zxing 生成二维码 带logo相关推荐

  1. [Java] Java生成二维码带LOGO, LOGO加圆角白框

    先来看看效果: 实现: 生成指定文字内容的二维码 二维码中间嵌入LOGO 二维码做圆角和白色边框处理 新需求不断, 这不, 又来了个想生成带用户头像的需求. 蛮简单的- 在这里造完轮子分享给大家 因为 ...

  2. ZXing3.3.3 生成二维码带logo

    一.前言 我们这里对ZXing不做过多介绍,不清楚的小伙伴可以自行百度. 直接进入正题,这里会封装成工具使用: 二.Hutool工具包+ZXing 这里我们使用Hutool工具包+ZXing,Huto ...

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

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

  4. asp.net 生成二维码,带logo,带下方文字

    目标可以生成带网址的信息的二维码,可以是带logo 或者不带logo,或者下方带一行说明文字 nuget 下载二维码管理包 public static Bitmap GenerateQrCode(st ...

  5. vue 生成二维码(带logo)与条形码

    1.生成二维码安装 npm install  --save qrcodejs 实现代码 <template><div><qrcode :url="jmc&quo ...

  6. java生成二维码(带logo)

    利用hutool工具实现java二维码生成 官网链接:https://www.hutool.cn/ 添加依赖 <dependency><groupId>cn.hutool< ...

  7. (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

    场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老 ...

  8. ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

    首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老美开发的,barcode4j对一维条形码处理的很好,而且支持的格式很多,当然也可以对二维码进行处理,效果个人 ...

  9. java使用zxing生成二维码,可带logo和底部文字

    java使用zxing生成二维码,可带logo和底部文字 springboot中整合zxing生成二维码 一.导入依赖 <properties><zxing.version>3 ...

最新文章

  1. 13.angular时间
  2. P3385-[模板]负环【SPFA】
  3. 操作系统学习笔记-2.1.5线程概念和多线程模型
  4. c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法
  5. selenium + python自动化测试unittest框架学习(一)selenium原理及应用
  6. 【报告分享】腾讯研究院-AI生成内容报告2020.pdf(附下载链接)
  7. github上成员贡献量_Bifrost 长期贡献规则,获得 BNC 的 5 种方式
  8. GDB调试时的参数设置
  9. 如何在 Mac 上的调度中心中查看打开的窗口和空间?
  10. Win10锁屏壁纸不能自动更新最全处理方法
  11. 就业协议服务器是什么意思,什么是就业协议
  12. 如何让博文在百度上被搜索到
  13. 庭院深深深几许,杨柳堆烟,帘幕无重数
  14. 浙江八年级 python_今年9月起 浙江八年级新增Python编程课程
  15. linux 系统迁移到固态硬盘,Linux系统迁移记录(从HDD到SSD)
  16. android 区域 推流,Android——直播推流SDK
  17. 合肥市专精特新中小企业申报汇总,申报奖励、认定条件、材料流程时间
  18. Day8 打卡第八天
  19. 多普达c838、c858侧滑键盘的利器--支持硬键盘的A4输入法
  20. SQL语句更改字段名

热门文章

  1. Windows程序设计与Windows核心编程(资源)
  2. 使用keras.applications和keras_applications构建keras.Model
  3. ORAN专题系列-9:5G O-RAN 分体式小基站Option7-8硬件白盒化的参考架构
  4. 【Mac】如何直接屏幕截图复制到剪切板
  5. python遗传算法实例:求一元二次方程实例
  6. android m和6.0的区别吗,清甜棉花糖:安卓M/Android 6.0上手体验评测
  7. mysql 省市县三级联动查询_省市县三级联动的SQL语句
  8. safari文件下载后缀加.exe
  9. IT30:天行健--君子以自强不息(启航)
  10. 工作流中实现一个节点多个节点的顺序审批