使用java替换小程序二维码中间的logo时候,比较烦恼的事是需要将二维码中间的logo替换掉,画上自己的logo。

下边是我计算之后的结果,这种计算方式会根据二维码的尺寸,动态的改变logo的尺寸。希望对你们有帮助。

    /*** 合并小程序二维码和头像** @param qrCode     二维码* @param avatarUrl  头像* @return*/public BufferedImage mergeImage(BufferedImage qrCode, String avatarUrl) {// 将头像转为圆角BufferedImage avatarImage = copeImage(avatarUrl);//创建Graphics2D绘图Graphics2D graphics = qrCode.createGraphics();// 设置抗锯齿的属性graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);int qrWidth = qrCode.getWidth();// 二维码宽度int qrHeight = qrCode.getHeight();// 二维码高度int logoQrWidth = (int) (qrWidth / 2.2); // 组合之后logo的宽度(占二维码的1/2.2)int logoQrHeight = (int) (qrHeight / 2.2);// 组合之后logo的高度// 左边距、上边距、宽度、高度。覆盖原始图片中间的logographics.drawImage(avatarImage,(qrWidth - logoQrWidth) / 2,(qrHeight - logoQrHeight) / 2,logoQrWidth,logoQrHeight,null);//关闭graphics.dispose();return qrCode;}

上边是合并图片的方式。

下边是把图片裁剪成圆角的方式。

    /*** 将图片处理成圆角** @return*/public BufferedImage copeImage(String avatarUrl) {// 从链接中获取图片BufferedImage avatarImage;try {avatarImage = ImageIO.read(new URL(avatarUrl));int width = avatarImage.getWidth();int height = avatarImage.getHeight();// 透明底的图片BufferedImage formatAvatarImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);Graphics2D graphics = formatAvatarImage.createGraphics();// 把图片切成一个圆graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);// 留一个像素的空白区域,这个很重要,画圆的时候把这个覆盖int border = 1;// 图片是一个圆型Ellipse2D.Double shape = new Ellipse2D.Double(border, border, width - border * 2, width - border * 2);// 需要保留的区域graphics.setClip(shape);graphics.drawImage(avatarImage, border, border, width - border * 2, width - border * 2, null);graphics.dispose();// 在圆图外面再画一个圆// 新创建一个graphics,这样画的圆不会有锯齿graphics = formatAvatarImage.createGraphics();graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);int border1 = 3;//画笔是4.5个像素,BasicStroke的使用可以查看下面的参考文档//使画笔时基本会像外延伸一定像素,具体可以自己使用的时候测试Stroke s = new BasicStroke(4.5F, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);graphics.setStroke(s);graphics.setColor(Color.WHITE);graphics.drawOval(border1, border1, width - border1 * 2, width - border1 * 2);graphics.dispose();return formatAvatarImage;} catch (Exception e) {logger.error("将头像变为圆角异常", e);}return null;}

成品看下图:

java - 小程序二维码中间的logo占整个二维码的比例计算相关推荐

  1. 基于微信小程序共享停车位设计与实现SSM_car.rar(项目源码+数据库文件+微信小程序开发+后端java语言)

    主要功能实现了共享车位的创建,车位的管管理,创建车辆.车辆的管理.附近车位.显示车位的编号,车位的位置,车位的状态,车位.可以查看订单记录车位.停费时间,确认时间计费的时间.可以删除,订单也可以确认是 ...

  2. ssm+mysql+基于微信小程序的恋上诗词设计与实现 毕业设计-附源码011431

    基于SMM微信小程序的恋上诗词设计与实现 摘  要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,恋 ...

  3. 小程序+spring boot心理测评与活动管理系统毕业设计-附源码191752

    摘  要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,心理测评与活动管理小程序被用户普遍使用,为方 ...

  4. JAVA小程序简单学籍系统参考代码,登陆小程序,Jtree //Jtree,JDBC,Jframe

    JAVA小程序简单学籍系统//Jtree,JDBC,Jframe 我们可以先在JAVA写一个类打开数据库获取连接 package sql; import java.sql.Connection; im ...

  5. 美团饿了么外卖返利小程序公众号搭建外卖返利分销系统代cps源码

    美团饿了么外卖返利小程序公众号搭建外卖返利分销系统代cps源码 外卖CPS小程序源码分享 饿了么.美团优惠开发(外卖cps,三级裂变源码) 源码或搭建 http://y.mybei.cn/ 截图 功能 ...

  6. Wifi热点java_用笔记本电脑开启热点Java小程序

    用笔记本电脑开启热点Java小程序是一条命令设置笔记本成无线热点, 制作"开启无线热点工具,这个小工具实际上是用java来执行cmd命令来完成操作,当然也可以反射jar里边的字节码文件. 使 ...

  7. java小程序_Java小程序

    java小程序 An applet is a special kind of Java program that runs in a Java enabled browser. This is the ...

  8. springboot+基于微信小程序的心理医生系统的设计实现 毕业设计-附源码191610

    小程序springboot心理医生系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难 ...

  9. 基于Bluemix快速构建部署一款Java小程序——微博影响力分析器

    一.前言 近年来IT界风云际会,各种新概念如大数据.云平台.虚拟化等,如雨后春笋般层出不穷.而云平台,可以说是近些年来引领时代新潮的边缘概念之一,各大厂商竞相推出各种云产品,抢占云市场高地.近期,IT ...

  10. java小程序源代码,详细说明

    零基础的小白,如何学好Java?要多动手实践学习Java就像学习数学一样,在懂得理论知识后,一定要实践.学习Java不能搭便车,有些时候,句子和语法看起来很简单,但是亲自实践起来却总有自己不知道的知识 ...

最新文章

  1. 【转载】写博意味着什么?
  2. 递归与递推 普通排队问题及带约束条件的排队问题 c代码
  3. 培训完java后想放弃_10个创意修补案例,改造后漂亮极了,看完让人想动手试试...
  4. 东南亚的IT公司,我劝你善良!
  5. java基础学习笔记(一)
  6. 百科园c语言题库第八章南信大,C语言上机题库百科园第3章!南信大!.doc
  7. 微软将允许Epic Games等App登上微软商店
  8. django web app_妹子用半天时间开发一个员工管理系统,没错django就是这么强悍
  9. golang+linux+pipline
  10. cad插件_CAD插件自动编号安装教程
  11. 19108期计算机开机号,排列三19108期藏机图诗汇总
  12. LaTeX Beamer 制作PPT时给某一页添加背景图片(并设置透明度)
  13. SAP公有云和私有云解决方案概述
  14. jbX和finss的一些问题
  15. Python笔记:query查询
  16. 原神一面:Java 泛型中的通配符 T,E,K,V,?,你确定都了解吗?
  17. CSS -- 实现DIV层背景颜色渐变 (兼容IE 火狐 谷歌浏览器)
  18. 台式电脑怎么添加计算机硬盘,台式机如何添加硬盘|台式机添加硬盘的方法
  19. 高通骁龙665能不能升级鸿蒙系统,高通骁龙665性能好不好 高通骁龙665性能测试...
  20. Nessus Host Discovery

热门文章

  1. SIGIR 2020最佳论文公布,清华大学揽多个奖项,大三学生摘得最佳短论文奖
  2. ntp时间校准服务器的调试方法
  3. excel服务器2010网站,勤哲Excel服务器2010高级企业版完整安装包
  4. python语法笔记-linux
  5. 记一次nsp解包(nscb解包nsp/xci,cpk解包,转hca、adx到MP3,转nsm、m2v到MP4方法集锦)
  6. 斯坦福大学的 CS231n(全称:面向视觉识别的卷积神经网络)
  7. 聊聊高并发系统之限流特技(一)作者:张开涛
  8. Android小项目:计算器
  9. Microsoft Store 微软商店中 APP 独立安装包下载方法
  10. 全志平台camera驱动开发(3)MIPI接口camera驱动开发