在网上找到这样一段代码 完成图片合并,测试可合并,合并完的图片为纵向,即第一张图片在上面,第二张图片在下面,但我希望合并为横向合并,不知道该改哪个参数,另请教一下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