Java Image合并

原创 2015年11月19日 15:12:26
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.junit.Test;

public class MergeImageUtils {
	
	/**
	 * 将两张图片合并为一张图片
	 * @param oneSrc
	 * @param twoSrc
	 * @param mergeSrc 合并后的图片路径
	 */
	public void mergeImage(String oneSrc, String twoSrc, String mergeSrc) {
		String postFix = mergeSrc.substring(mergeSrc.lastIndexOf(".") + 1, mergeSrc.length());
		try {
			File fileOne = new File(oneSrc);//读取第一张图片
			Image src = ImageIO.read(fileOne);  
			int width = src.getWidth(null);
			int height = src.getHeight(null);
			if(width > 900 || height > 900) {
				int num = (int) Math.ceil((double)width/900);
				int num2 = (int) Math.ceil((double)height/900);
				num = num > num2 ? num : num2;
				width = width/num;
				height = height/num;
			}
	        BufferedImage bufferedImageOne = null;
			if ("png".equalsIgnoreCase(postFix.toLowerCase())) {
				bufferedImageOne = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
			} else {
				bufferedImageOne = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
			}
			bufferedImageOne.getGraphics().drawImage(src.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0,  null);
			int[] imageArrayOne = new int[width * height];// 从图片中读取RGB
			imageArrayOne = bufferedImageOne.getRGB(0, 0, width, height, imageArrayOne, 0, width);
			
			File fileTwo = new File(twoSrc);//读取第二张图片
			src = ImageIO.read(fileTwo);  
			BufferedImage bufferedImageTwo = null;
			if ("png".equalsIgnoreCase(postFix.toLowerCase())) {
				bufferedImageTwo = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
			} else {
				bufferedImageTwo = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
			}
			bufferedImageTwo.getGraphics().drawImage(src.getScaledInstance(width, height,  Image.SCALE_SMOOTH), 0, 0,  null);
			int[] imageArrayTwo = new int[width * height];// 从图片中读取RGB
			imageArrayTwo = bufferedImageTwo.getRGB(0, 0, width, height, imageArrayTwo, 0, width);
			
			//生成新图片
			BufferedImage imageNew = new BufferedImage(width*2, height, BufferedImage.TYPE_INT_RGB);
			imageNew.setRGB(0 , 0, width, height, imageArrayOne, 0, width);		//设置左半部分的RGB
			imageNew.setRGB(width, 0, width, height, imageArrayTwo, 0, width);	//设置右半部分的RGB
			File outFile = new File(mergeSrc);
			//写图片
			ImageIO.write(imageNew, postFix, outFile);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
    
	@Test
    public void testMergeImage(){
    	mergeImage("D:/source/image/1.jpg", "D:/source/image/2.png", "D:/source/image/3.png");
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 读写图像

Java中进行图像I/O(即读图片和写图片,不涉及到复杂图像处理)有三个方法: 1. Java Image I/O API,支持常见图片,从Java 2 version 1.4.0开始就内置了。 ...

java image

ImageIcon 发表评论(0) 编辑词条import   java.io.*; import   java.util.*; import   com.sun.image.codec.jpeg.*;...

java 中 image 和 byte[] 相互转换

 java 中 image 和 byte[] 相互转换 java 中 image 和 byte[] 相互转换可恶的…………其实也挺好的 只是把好不容易写出来的东西记下来,怕忘了…… 下面,我来介绍一个...

java方面图形/图像处理

Java图像处理类库 Java Image Filters Java Image Filters 是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处...
  • it_man
  • it_man
  • 2012年05月27日 11:24
  • 30071

java drawimage()方法

图像使用的支持分布于java.applet, java.awt, 和 java.awt.image 包中。每一个图像都用一个 java.awt.Image 对象表示。除了Image 类外,java...

java实现image和base64互转

java实现image和base64互转

java图片高保真缩放

java图片高保真缩放,图片缩放不失真,高清图片缩放

JAVA正则表达式,提取img的src问题!!!

Pattern  p = Pattern.compile("href\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^"'>\s]+))");//这个不正确 /** ...
  • yuan8080
  • yuan8080
  • 2011年10月23日 23:22
  • 48448

java中获取img中的src标签

/** * 获取img标签中的src值 * @param content * @return */ public static List getImgS...

JAVA版的qr_image

  • 2017年05月12日 15:37
  • 16KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Image合并
举报原因:
原因补充:

(最多只允许输入30个字)