使用java将几张图片合成一张图片

背景描述:最近在做app推送消息,在做关注人推送需要把有更新的关注人头像合成一张图片,展示示例如下:
使用java将几张图片合成一张图片_第1张图片
花了一些时间来弄这个,之前没做过图片处理,所以记录一下,合成之后的样例如下:
使用java将几张图片合成一张图片_第2张图片
下面是代码:

/**
	 * 
	 * @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

你可能感兴趣的:(工作日常)