java模仿微信QQ群聊头像拼接,根据群聊内的用户头像拼接群聊头像,九宫格 效果图,这里只放了几张,1-9张图片都可以的,如果图片路径是从数据库查出来的相对路径,记得加上绝对路径否则会报找不到读取文件错误,把查出来的群成员头像路径加上绝对路径前缀,封装到list集合即可,然后在调用下面的工具类 List paths = new ArrayList(); String logoUrl = UUID.randomUUID() + “.png”;//防止覆盖 UpdateGroupLogoUtil.generate(paths, BIDE.getFilePath() + logoUrl); BIDE.getFilePath() + logoUrl这个参数是拼接之后生成的图片地址和图片名 如:F:\zsl\33 .jpg ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190718093930362.jpg) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190718093946507.jpg) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190718094019649.jpg) 附带测试
package im.bide.utils;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public abstract class UpdateGroupLogoUtil {
/**
* 图片格式:JPG
*/
private static final String PICTRUE_FORMATE = "jpg";
/**
* 生成组合头像
* 画布宽度和高度为166,图片间距为2
*
* @param paths 用户头像路径列表
* @param outPath 生成后的头像保存路径
* @throws IOException
*/
public static void generate(List paths, String outPath) throws IOException {
generate(paths, 166, 4, outPath);
}
/**
* 生成组合头像
*
* @param paths 用户头像路径列表
* @param length 画板的宽高和高度
* @param interval 画板中的图片间距
* @param outPath 生成后的头像保存路径
* @throws IOException
*/
public static void generate(List paths, int length, int interval, String outPath) throws IOException {
int wh = (length - interval * 4) / 3; // 每个图片的宽高和高度:图片数>4
if (paths.size() == 1) {
wh = length - interval * 2; // 每个图片的宽高和高度:图片数=1
}
if (paths.size() > 1 && paths.size() < 5) {
wh = (length - interval * 3) / 2; // 每个图片的宽高和高度:图片数>0并且 |