java工具类-java实现 生成圆头像
1.创建RoundHeadImgUtils工具类
package com.mrd.utils;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;/*** 合成圆头像*/
public class RoundHeadImgUtils {/***** @param srcFilePath 源图片文件路径* @param circularImgSavePath 新生成的图片的保存路径,需要带有保存的文件名和后缀* @param targetSize 文件的边长,单位:像素,最终得到的是一张正方形的图,所以要求targetSize<=源文件的最小边长* @param cornerRadius 圆角半径,单位:像素。如果=targetSize那么得到的是圆形图* @return 文件的保存路径* @throws IOException*/public static String makeCircularImg(String srcFilePath, String circularImgSavePath,int targetSize, int cornerRadius) throws IOException {BufferedImage bufferedImage = ImageIO.read(new File(srcFilePath));BufferedImage circularBufferImage = roundImage(bufferedImage,targetSize,cornerRadius);ImageIO.write(circularBufferImage, "png", new File(circularImgSavePath));return circularImgSavePath;}private static BufferedImage roundImage(BufferedImage image, int targetSize, int cornerRadius) {BufferedImage outputImage = new BufferedImage(targetSize, targetSize, BufferedImage.TYPE_INT_ARGB);Graphics2D g2 = outputImage.createGraphics();g2.setComposite(AlphaComposite.Src);g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);g2.setColor(Color.WHITE);g2.fill(new RoundRectangle2D.Float(0, 0, targetSize, targetSize, cornerRadius, cornerRadius));g2.setComposite(AlphaComposite.SrcAtop);g2.drawImage(image, 0, 0, null);g2.dispose();return outputImage;}/*** 生成圆角图标* @param image* @param cornerRadius 圆角半径* @return*/public static BufferedImage makeRoundedCorner1(BufferedImage image, int cornerRadius) {int w = image.getWidth();int h = image.getHeight();BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);Graphics2D g2 = output.createGraphics();g2.setComposite(AlphaComposite.Src);g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);g2.setColor(Color.WHITE);g2.fill(new RoundRectangle2D.Float(0, 0, w, h, cornerRadius, cornerRadius));g2.setComposite(AlphaComposite.SrcAtop);g2.drawImage(image, 0, 0, null);g2.dispose();return output;}/**图片圆角处理,背景透明化* @param srcImageFile 原图片* @param result 处理后图片* @param type 图片格式* @param cornerRadius 720为圆角*/public void makeRoundedCorner(File srcImageFile, File result, String type, int cornerRadius) {try {BufferedImage bi1 = ImageIO.read(srcImageFile);// 根据需要是否使用 BufferedImage.TYPE_INT_ARGBBufferedImage image = new BufferedImage(bi1.getWidth(), bi1.getHeight(),BufferedImage.TYPE_INT_ARGB);Ellipse2D.Double shape = new Ellipse2D.Double(0, 0, bi1.getWidth(), bi1.getHeight());Graphics2D g2 = image.createGraphics();image = g2.getDeviceConfiguration().createCompatibleImage(bi1.getWidth(), bi1.getHeight(), Transparency.TRANSLUCENT);g2 = image.createGraphics();g2.setComposite(AlphaComposite.Clear);g2.fill(new Rectangle(image.getWidth(), image.getHeight()));g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC, 1.0f));g2.setClip(shape);// 使用 setRenderingHint 设置抗锯齿g2 = image.createGraphics();g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);g2.fillRoundRect(0, 0,bi1.getWidth(), bi1.getHeight(), cornerRadius, cornerRadius);g2.setComposite(AlphaComposite.SrcIn);g2.drawImage(bi1, 0, 0, bi1.getWidth(), bi1.getHeight(), null);g2.dispose();ImageIO.write(image, type, result);} catch (Exception e) {// TODO: handle exception}}}
2.创建测试类 RoundTest
package com.mrd.test;import com.mrd.utils.RoundHeadImgUtils;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;/*** 720正圆形* 40是圆角形*/
public class RoundTest {public static void main(String[] args) {try {BufferedImage image = ImageIO.read(new File("原图片路径"));BufferedImage rounded = RoundHeadImgUtils.makeRoundedCorner1(image, 720);ImageIO.write(rounded, "png", new File("生成后的图片路径"));} catch (IOException e) {e.printStackTrace();}}
}
转载:https://blog.csdn.net/qq_19714937/article/details/68631829
java工具类-java实现 生成圆头像相关推荐
- Java工具类 —— Java POI 4.X 的Excel基本操作
Excel报表操作在日常办公和生活中应用非常广泛,今天我们来看看Java是怎么操作Excel的. 先分享一下工具类:工具类ExcelOperators,点击下载 欢迎下载使用,更希望自己动动手,写一下 ...
- java工具类-java仿微信九宫格头像
创建Utils类 ImageUtil package com.mrd.utils;import javax.imageio.ImageIO; import java.awt.Color; import ...
- Java工具类--雪花算法生成全局唯一ID
import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.NetworkI ...
- 腾讯开放平台接口鉴权(计算签名)工具类 java版
腾讯开放平台 接口鉴权(签名)工具类 java版 用到了Hutool工具类 package top.seasmall.platform.core.config.nettyws.util;import ...
- Java工具类实现word转pdf结果几乎一模一样
Background [封装好的工具类][转换效果99%][无水印] 实现技术[Aspose] 这里给出需要的依赖包 aspose-words-15.8.0.jar和word-license.xml, ...
- (6)常用的Java工具类
目录 前言: 第一部分:常用的16个工具类 一.org.apache.commons.io.IOUtils 二.org.apache.commons.io.FileUtils 三.org.apache ...
- RSA加密算法介绍及Java工具类
一.RSA加密算法介绍 当今重要的三类加密算法:非对称加密.对称加密以及哈希算法(HASH严格说不是加密算法,但由于其不可逆性,已成为加密算法中的一个重要构成部分). 1976年以前,所有的加密方法都 ...
- elasticsearch搜索引擎查询java工具类
Elasticsearch查询java工具类 项目组使用Elasticsearch搜索引擎也有一段时间了,刚开始是2.4版本,现在又要在新的工程中使用,准备升级为5.4版本,以前的工具类也不好用了,没 ...
- Java工具类——DES加密和解密工具 I
可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. package com.app; import java.security.Key; import java.security.Sec ...
最新文章
- MySQL数据库实用教程考核_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠【pdf】...
- Keywords Search AC自动机QAQ
- 好货不能错过!一款在GitHub上22k+star的人力资源管理系统
- mysql给数据做排名_mysql给数据统计做排名
- Nginx版本无缝升级
- 思考一个问题:如何重现主从备份失败的案例
- ssh-keygen 的 详解
- Linux ulimit命令(控制shell执行程序的资源、并发)
- python文件输入符_python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)...
- FTP文件传输协议之vsftpd服务
- eclipse svn下载并转为maven项目
- Python数据分析学习系列 十四 数据分析案例
- Java中类和对象的区别
- 如何打造成功的数据归档策略
- windows 编程的学习次序
- python爬虫系列之下载在线文档Excel(石墨)
- 华为 eNSP 打开警告:请将eNSP相关应用程序添加到windows firewall的允许程序列表,并允许其在公用网络上运行!
- 即使是个收外卖的前台小妹,也要时刻想着如何咸鱼翻身
- 计算机集成制造系统 刊物界别,基于多传感器的高速CNC机床集成监控系统设计.pdf...
- Excel VBA属性、方法、事件大全——Part7(Complete List of Excel VBA attribute/method and event)
热门文章
- 下载神器v1.0.9磁力搜索下载支持在线播放自定义搜索源投屏解析速度不错
- 【NLP】1分钟理清文本纠错框架pycorrector
- 内网用户如何下载BT资源?BT转HTTP下载
- 山东春季高考计算机可以报考的本科学校,山东春季高考可以报考的本科学校
- SpringBoot 集成 Caffeine(咖啡因)最优秀的本地缓存
- 蓝桥杯Python-2n皇后问题(和别人的想法有点不一样)
- android气泡飞舞,泡泡向前冲攻略彩色泡泡漫天飞舞
- HTML的块级元素(常用整理)
- TextView文字左右对齐
- C++数字转字符串 to_string()