日期:2014-05-20  浏览次数:20723 次

关于2张图片合成1张的问题
在网上找到这样一段代码 完成图片合并,测试可合并,合并完的图片为纵向,即第一张图片在上面,第二张图片在下面,但我希望合并为横向合并,不知道该改哪个参数,另请教一下getRGB和setRGB这2个方法中的所有参数含义
Java code

import java.io.File;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class TestPic {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
               // 读取第一张图片
               File fileOne = new File("D:\\1.jpg");
               BufferedImage ImageOne = ImageIO.read(fileOne);
               int width = ImageOne.getWidth();// 图片宽度
               int height = ImageOne.getHeight();// 图片高度
               // 从图片中读取RGB
                int[] ImageArrayOne = new int[width * height];
                ImageArrayOne = ImageOne.getRGB(0, 0, width, height, ImageArrayOne,0, width);
               // 对第二张图片做相同的处理
               File fileTwo = new File("D:\\2.jpg");
               BufferedImage ImageTwo = ImageIO.read(fileTwo);
               int[] ImageArrayTwo = new int[width * height];
               ImageArrayTwo = ImageTwo.getRGB(0, 0, width, height, ImageArrayTwo,0, width);
               // 生成新图片
               // BufferedImage ImageNew = new BufferedImage(width * 2, height,
               // BufferedImage.TYPE_INT_RGB);
               BufferedImage ImageNew = new BufferedImage(width, height*2,BufferedImage.TYPE_INT_RGB);
               ImageNew.setRGB(0, 0, width, height, ImageArrayOne, 0, width);// 设置左半部分的RGB
               ImageNew.setRGB(0, height, width, height, ImageArrayTwo, 0, width);// 设置右半部分的RGB
               File outFile = new File("D:\\out.jpg");
               ImageIO.write(ImageNew, "jpg", outFile);// 写图片
               }catch (Exception e) {    
                  e.printStackTrace();
               }
    }

}



------解决方案--------------------
修改如下:
Java code
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