背景描述:最近在做app推送消息,在做关注人推送需要把有更新的关注人头像合成一张图片,展示示例如下:
花了一些时间来弄这个,之前没做过图片处理,所以记录一下,合成之后的样例如下:
下面是代码:
/**
*
* @Title: modifyImagetogeter
* @Description: 将几张图片合成一张图片
* @param: @param b1
* @param: @param b2
* @param: @param b3
* @param: @return
* @return: BufferedImage
* @throws
* @author:石德斌
* @date:2020年4月21日 下午3:26:41
*/
public static BufferedImage modifyImagetogeter(BufferedImage[] image) {
//创建一个304*304的图片
BufferedImage tag = new BufferedImage(304,304,BufferedImage.TYPE_INT_RGB);
try {
Graphics2D graphics = tag.createGraphics();
//设置颜色为218,223,224
graphics.setColor(new Color(218,223,224));
//填充颜色
graphics.fillRect(0, 0, 304, 304);
int count = image.length;
//根据不同的合成图片数量设置图片放置位置
if(count == 1){
int startX = 108;
int startY = 108;
BufferedImage b = image[0];
graphics.drawImage(b, startX, startY, b.getWidth(), b.getHeight(), null);
}else if(count == 2){
int startX = 60;
int startY = 108;
BufferedImage b1 = image[0];
graphics.drawImage(b1, startX, startY, b1.getWidth(), b1.getHeight(), null);
BufferedImage b2 = image[1];
startX = startX + b1.getWidth()+8;
graphics.drawImage(b2, startX, startY, b2.getWidth(), b2.getHeight(), null);
}else if(count == 3){
int startX = 108;
int startY = 60;
BufferedImage b1 = image[0];
graphics.drawImage(b1, startX, startY, b1.getWidth(), b1.getHeight(), null);
BufferedImage b2 = image[1];
startX = 60;
startY = 60 + b1.getHeight() + 8;
graphics.drawImage(b2, startX, startY, b2.getWidth(), b2.getHeight(), null);
BufferedImage b3 = image[2];
startX = startX + b2.getWidth()+8;
graphics.drawImage(b3, startX, startY, b3.getWidth(), b3.getHeight(), null);
}else if(count == 4){
int startX = 60;
int startY = 60;
BufferedImage b1 = image[0];
graphics.drawImage(b1, startX, startY, b1.getWidth(), b1.getHeight(), null);
BufferedImage b2 = image[1];
startX = 60 + b1.getWidth() + 8;
graphics.drawImage(b2, startX, startY, b2.getWidth(), b2.getHeight(), null);
BufferedImage b3 = image[2];
startX = 60;
startY = 60 + b2.getHeight() + 8;
graphics.drawImage(b3, startX, startY, b3.getWidth(), b3.getHeight(), null);
BufferedImage b4 = image[3];
startX = 60 + b3.getWidth() + 8;
graphics.drawImage(b4, startX, startY, b4.getWidth(), b4.getHeight(), null);
}else if(count == 5){
int startX = 60;
int startY = 60;
BufferedImage b1 = image[0];
graphics.drawImage(b1, startX, startY, b1.getWidth(), b1.getHeight(), null);
BufferedImage b2 = image[1];
startX = startX + b1.getWidth()+8;
graphics.drawImage(b2, startX, startY, b2.getWidth(), b2.getHeight(), null);
startX = 12;
startY = 12 + startY + b2.getHeight();
for(int i = 2;i