9宫格 java_java 拼接头像9宫格
java后台拼接9宫格头像和添加水印文字,效果:
参考:https://blog.csdn.net/shichen88/article/details/101293541
1、拼接工具类:
package com.bai.blog.utils.files;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* 拼接图片 参考:https://blog.csdn.net/shichen88/article/details/101293541
* FileName: FileSplitUtil
* Create by: 漠天
* Date: 2019/12/23
*/
public class FileSplitUtil {
/**
* 合成图片
*
* @param imagePaths List* @param message String
* @param outPutPath String
* @throws IOException
* return String
*/
public static String overlapImage(ListimagePaths, String message, String outPutPath) throws IOException {
int withAndHeight = 530;//背景图片的宽高
int dividerWithAndHeight = 20;//divider分割空白宽高
int sonImageWithAndHeight = 150;//画的子头像图片的宽高
int sonImageRadius= 30;//画的子头像的圆角
// 设置背景图片大小,自己添加替换图片逻辑
// BufferedImage backgroundImage = resizeImage(566, 230, ImageIO.read(new File(backgroundPath)));
//new一个白色背景板
BufferedImage backgroundImage = new BufferedImage(withAndHeight,withAndHeight,BufferedImage.TYPE_INT_ARGB);
backgroundImage.getGraphics().setColor(Color.white);
backgroundImage.getGraphics().fillRect(0,0,withAndHeight,withAndHeight);
backgroundImage.getGraphics().dispose();
backgroundImage = setClip(backgroundImage,30);
// 初始化有效的图片BufferedImage列表
ListbufferedImageList = new ArrayList<>();
for(String imagePath:imagePaths){
bufferedImageList.add(setClip(resizeImage(sonImageWithAndHeight, sonImageWithAndHeight, ImageIO.read(new File(imagePath))),sonImageRadius));
}
// 获取背景画布
Graphics2D graphics = backgroundImage.createGraphics();
// 在背景图片上添加文字
graphics.setColor(Color.blue);
graphics.setFont(new Font("宋体", Font.PLAIN, 20));
graphics.drawString(message, sonImageWithAndHeight/3, sonImageWithAndHeight/3);
// 画出旋转的文字,在指定位置
Font font = new Font("宋体", Font.PLAIN, 80);
AffineTransform affineTransform = new AffineTransform();
affineTransform.rotate(-Math.toRadians(45), 50, 20);
Font rotatedFont = font.deriveFont(affineTransform);
graphics.setFont(rotatedFont);
graphics.drawString(message, sonImageWithAndHeight, withAndHeight-sonImageWithAndHeight);
// 在背景图片上添加子图片
if(bufferedImageList.size()>0){
if(bufferedImageList.size()<2){
graphics.drawImage(bufferedImageList.get(0), dividerWithAndHeight, dividerWithAndHeight, withAndHeight-dividerWithAndHeight*2, withAndHeight-dividerWithAndHeight*2, null);
}else if(bufferedImageList.size()<3){
int newSonWidth = withAndHeight/2-dividerWithAndHeight*2;
int centerPlex =(withAndHeight-newSonWidth)/2;
graphics.drawImage(bufferedImageList.get(0), dividerWithAndHeight+dividerWithAndHeight/2, centerPlex, newSonWidth, newSonWidth, null);
graphics.drawImage(bufferedImageList.get(1), newSonWidth+dividerWithAndHeight*2+dividerWithAndHeight/2, centerPlex, newSonWidth, newSonWidth, null);
}else if(bufferedImageList.size()<10){
for(int i=0;i
2、调用:
ListformatFilePath = new ArrayList<>();
formatFilePath.add("D:/JavaLibFiles/Files/1.png");
formatFilePath.add("D:/JavaLibFiles/Files/2.png");
formatFilePath.add("D:/JavaLibFiles/Files/3.png");
formatFilePath.add("D:/JavaLibFiles/Files/4.png");
formatFilePath.add("D:/JavaLibFiles/Files/5.png");
formatFilePath.add("D:/JavaLibFiles/Files/6.png");
formatFilePath.add("D:/JavaLibFiles/Files/7.png");
String outPutPath = "D:/JavaLibFiles/Files/splitImage.png";
String message = "测试拼接信息";
String splitResultImagePath = FileSplitUtil.overlapImage(formatFilePath,message,outPutPath);
// 结果地址:splitResultImagePath
9宫格 java_java 拼接头像9宫格相关推荐
- java 拼接头像9宫格
java后台拼接9宫格头像和添加水印文字,效果: 参考:https://blog.csdn.net/shichen88/article/details/101293541 1.拼接工具类: ...
- Excel技能培训-INDIRECT实现拼接动态引用单元格,trl+pageDown速切换工作簿,多工作表求和,多个工作簿合并和拆分
1. 使用INDIRECT实现拼接动态引用单元格内容 =INDIRECT("E"&COUNTA(G14:G17)) 2. 使用ctrl+pageUp ,ctrl+pageD ...
- 模拟后宫oracle攻略,模拟后宫(Haramase Simulator)_模拟后宫安卓版下载-我的世界中文网...
软件介绍 模拟后宫是一款由欧美制作的有着明显的日系风格的一款精美RPG游戏,这款游戏中的环峰完全模仿了日系动漫的风格,非常的精美,当然了游戏的剧情也是非常的不错的,而且玩法多样话,非常的自由.喜欢的朋 ...
- Excel 中拼接多个单元格内容的方法
第一步,打开需要拼接多个单元格内容的表格 第二步,在E2单元格输入[=A2&B2&C2&D2]即可得到拼接后的结果 第三步,单击E2单元格右下角并往下拉,向下引用,单元格则自动 ...
- opencl4格环视拼接Beta0.5
opencl4格环视拼接Beta0.5 文章目录 opencl4格环视拼接Beta0.5 *以下内容是单一输入的4格环视拼接,用于进行基础讲解 :* 1.opencl中kernel通过 get_glo ...
- cxgrid中纵横单元格合并_被合并单元格折磨疯的我,真后悔没早点知道这个Excel技巧!...
在大家日常的工作中,经常会用到Excel合并单元格,然而合并单元格其实只是美化了表格,它会使我们后续的统计工作遇到很多麻烦,今天就给大家提供两个解决这个问题的思路. 01 合并单元格的基本操作方法 在 ...
- vba字典合并单元格为空_VBA合并单元格求和处理套路
在Excel中,合并单元格的使用会带来相当令人不爽的麻烦.但其使用率还是蛮高的. 如图,需要对部门的销售额做总计. Sub 樱桃小丸子() Dim arr, d As Object, i&, ...
- Datagridview 去掉单元格焦点虚框 和设置单元格不能被选中
去掉单元格焦点虚框和设置单元格不能被选中 private void kDGV_ghd_RowPrePaint(object sender, DataGridViewRowPrePaintEventAr ...
- 设置单元格填充方式_单元格的选择及设置单元格格式
数据输入完毕,接下来可以设置字体.对齐方式.添加边框和底纹等方式设置单元格格式,从而美化工作表.要对单元格进行设置,首先要选中单元格. 选择单元格 选择单元格是指在工作表中确定活动单元格以便在单元格中 ...
最新文章
- 性能优化之Java(Android)代码优化
- LeetCode 90. 子集 II(回溯+剪枝)
- 一次Nginx负载均衡的安装与配置
- 知识图谱入门2-1:实践——基于医疗知识图谱的问答系统
- AndroidStudio_安卓原生开发_保存全局数据---Android原生开发工作笔记141
- POJ 2492 A Bug's Life (带权并查集 向量偏移)
- NOIP模拟赛20161016R2
- 斐波那契堆的C++实现
- 奇异矩阵及广义逆矩阵
- 自学python在电脑上安装什么杀毒软件好_电脑上装那个杀毒软件比较好?
- Python导入数据
- 【C语言入门简单程序】三子棋——新手轻松学
- win10 Asus 家庭版 电脑初始设置相关
- 干货!如何在训练中自动识别数据中潜在的不同分布并自适应?——以空间数据为例,应用不限于空间数据...
- 报表生成器FastReport .Net注册数据教程
- Java 平衡二叉树之单旋(左旋,右旋)与双旋
- 手机触摸pass测试软件,PaperPass手机版
- 二维数组实现n阶方阵
- 新一代三维GIS技术白皮书v1.0
- IOS截屏,View截图的基本方法
热门文章
- 活动安排问题--贪心算法
- 【转载】优酷网首席执行官兼创始人古永锵演讲
- C# Task的简单使用
- 数字签名时间戳服务器的原理 !
- SQL SERVER 2005 进行XML查询
- NHibernate介绍
- 计算机主机漏电,电脑机箱漏电怎么办?机箱电源漏电原因及解决方法
- redis根据通配符去批量删除指令
- postman发送post请求,服务器日志确保GET请求错误“ PageNotFound:208 Request method ‘GET‘ not supported”
- YOLO系列算法精讲:从yolov1至yolov4的进阶之路(呕心沥血2万字超全整理,建议收藏!)