java - 小程序二维码中间的logo占整个二维码的比例计算
使用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占整个二维码的比例计算相关推荐
- 基于微信小程序共享停车位设计与实现SSM_car.rar(项目源码+数据库文件+微信小程序开发+后端java语言)
主要功能实现了共享车位的创建,车位的管管理,创建车辆.车辆的管理.附近车位.显示车位的编号,车位的位置,车位的状态,车位.可以查看订单记录车位.停费时间,确认时间计费的时间.可以删除,订单也可以确认是 ...
- ssm+mysql+基于微信小程序的恋上诗词设计与实现 毕业设计-附源码011431
基于SMM微信小程序的恋上诗词设计与实现 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,恋 ...
- 小程序+spring boot心理测评与活动管理系统毕业设计-附源码191752
摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,心理测评与活动管理小程序被用户普遍使用,为方 ...
- JAVA小程序简单学籍系统参考代码,登陆小程序,Jtree //Jtree,JDBC,Jframe
JAVA小程序简单学籍系统//Jtree,JDBC,Jframe 我们可以先在JAVA写一个类打开数据库获取连接 package sql; import java.sql.Connection; im ...
- 美团饿了么外卖返利小程序公众号搭建外卖返利分销系统代cps源码
美团饿了么外卖返利小程序公众号搭建外卖返利分销系统代cps源码 外卖CPS小程序源码分享 饿了么.美团优惠开发(外卖cps,三级裂变源码) 源码或搭建 http://y.mybei.cn/ 截图 功能 ...
- Wifi热点java_用笔记本电脑开启热点Java小程序
用笔记本电脑开启热点Java小程序是一条命令设置笔记本成无线热点, 制作"开启无线热点工具,这个小工具实际上是用java来执行cmd命令来完成操作,当然也可以反射jar里边的字节码文件. 使 ...
- java小程序_Java小程序
java小程序 An applet is a special kind of Java program that runs in a Java enabled browser. This is the ...
- springboot+基于微信小程序的心理医生系统的设计实现 毕业设计-附源码191610
小程序springboot心理医生系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难 ...
- 基于Bluemix快速构建部署一款Java小程序——微博影响力分析器
一.前言 近年来IT界风云际会,各种新概念如大数据.云平台.虚拟化等,如雨后春笋般层出不穷.而云平台,可以说是近些年来引领时代新潮的边缘概念之一,各大厂商竞相推出各种云产品,抢占云市场高地.近期,IT ...
- java小程序源代码,详细说明
零基础的小白,如何学好Java?要多动手实践学习Java就像学习数学一样,在懂得理论知识后,一定要实践.学习Java不能搭便车,有些时候,句子和语法看起来很简单,但是亲自实践起来却总有自己不知道的知识 ...
最新文章
- 【转载】写博意味着什么?
- 递归与递推 普通排队问题及带约束条件的排队问题 c代码
- 培训完java后想放弃_10个创意修补案例,改造后漂亮极了,看完让人想动手试试...
- 东南亚的IT公司,我劝你善良!
- java基础学习笔记(一)
- 百科园c语言题库第八章南信大,C语言上机题库百科园第3章!南信大!.doc
- 微软将允许Epic Games等App登上微软商店
- django web app_妹子用半天时间开发一个员工管理系统,没错django就是这么强悍
- golang+linux+pipline
- cad插件_CAD插件自动编号安装教程
- 19108期计算机开机号,排列三19108期藏机图诗汇总
- LaTeX Beamer 制作PPT时给某一页添加背景图片(并设置透明度)
- SAP公有云和私有云解决方案概述
- jbX和finss的一些问题
- Python笔记:query查询
- 原神一面:Java 泛型中的通配符 T,E,K,V,?,你确定都了解吗?
- CSS -- 实现DIV层背景颜色渐变 (兼容IE 火狐 谷歌浏览器)
- 台式电脑怎么添加计算机硬盘,台式机如何添加硬盘|台式机添加硬盘的方法
- 高通骁龙665能不能升级鸿蒙系统,高通骁龙665性能好不好 高通骁龙665性能测试...
- Nessus Host Discovery
热门文章
- SIGIR 2020最佳论文公布,清华大学揽多个奖项,大三学生摘得最佳短论文奖
- ntp时间校准服务器的调试方法
- excel服务器2010网站,勤哲Excel服务器2010高级企业版完整安装包
- python语法笔记-linux
- 记一次nsp解包(nscb解包nsp/xci,cpk解包,转hca、adx到MP3,转nsm、m2v到MP4方法集锦)
- 斯坦福大学的 CS231n(全称:面向视觉识别的卷积神经网络)
- 聊聊高并发系统之限流特技(一)作者:张开涛
- Android小项目:计算器
- Microsoft Store 微软商店中 APP 独立安装包下载方法
- 全志平台camera驱动开发(3)MIPI接口camera驱动开发