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 Image大小处理

//获取硬盘上的图片   Image inputImage  = ImageIO.read(new File("c:/touxiang.jpg")); //创建一个BufferedImag...
  • AxJKz
  • AxJKz
  • 2016年03月15日 21:23
  • 447

java方面图形/图像处理

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

Java 读写图像

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

java中图像简单处理

博客分类:  swt swt image io drag scroll  Java简单图像处理  Java图像格式转换  ImageIO 目前支持一下格式:    BMP, ...
  • u011393661
  • u011393661
  • 2014年06月04日 15:26
  • 1309

Java中swing使用ImageIcon类添加图片

代码如下 package com.liuyanzhao; import javax.swing.ImageIcon; import javax.swing.JFrame; im...
  • LIU_YANZHAO
  • LIU_YANZHAO
  • 2017年05月25日 19:07
  • 4926

java 中 image 和 byte[] 相互转换

 java 中 image 和 byte[] 相互转换 java 中 image 和 byte[] 相互转换可恶的…………其实也挺好的 只是把好不容易写出来的东西记下来,怕忘了…… 下面,我来介绍一个...
  • zhouhaochen
  • zhouhaochen
  • 2009年10月28日 16:06
  • 15584

java image

ImageIcon 发表评论(0) 编辑词条import   java.io.*; import   java.util.*; import   com.sun.image.codec.jpeg.*;...
  • mengyuan10
  • mengyuan10
  • 2010年07月08日 00:09
  • 1062

im4java+ImageMagick/GraphicsMagick

im4java的jar包可以在maven库中找到 org.im4java im4java 1.4.0 aaa
  • mzglzzc
  • mzglzzc
  • 2014年12月18日 14:18
  • 8760

java image

  • 2012年01月09日 19:15
  • 2KB
  • 下载

image 合并

 编译环境:VS 2003语言:C#描述:三tif文件:a.tif(two pages),b.tif(three pages),c.tif(two pages)合并为net.tif(seven pag...
  • FollowIT
  • FollowIT
  • 2007年06月19日 17:10
  • 1078
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Image合并
举报原因:
原因补充:

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