java的实现图片合并

import java.awt.Image; 
2.import java.awt.image.BufferedImage; 
3.import java.io.File; 
4.import javax.imageio.ImageIO; 
5.import org.junit.Test; 
6. 
7.public class MergeImageUtils { 
8.     
9.    /**
10.     * 将两张图片合并为一张图片
11.     * @param oneSrc
12.     * @param twoSrc
13.     * @param mergeSrc 合并后的图片路径
14.     */ 
15.    public void mergeImage(String oneSrc, String twoSrc, String mergeSrc) { 
16.        String postFix = mergeSrc.substring(mergeSrc.lastIndexOf(".") + 1, mergeSrc.length()); 
17.        try { 
18.            File fileOne = new File(oneSrc);//读取第一张图片 
19.            Image src = ImageIO.read(fileOne);   
20.            int width = src.getWidth(null); 
21.            int height = src.getHeight(null); 
22.            if(width > 900 || height > 900) { 
23.                int num = (int) Math.ceil((double)width/900); 
24.                int num2 = (int) Math.ceil((double)height/900); 
25.                num = num > num2 ? num : num2; 
26.                width = width/num; 
27.                height = height/num; 
28.            } 
29.            BufferedImage bufferedImageOne = null; 
30.            if ("png".equalsIgnoreCase(postFix.toLowerCase())) { 
31.                bufferedImageOne = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); 
32.            } else { 
33.                bufferedImageOne = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
34.            } 
35.            bufferedImageOne.getGraphics().drawImage(src.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0,  null); 
36.            int[] imageArrayOne = new int[width * height];// 从图片中读取RGB 
37.            imageArrayOne = bufferedImageOne.getRGB(0, 0, width, height, imageArrayOne, 0, width); 
38.             
39.            File fileTwo = new File(twoSrc);//读取第二张图片 
40.            src = ImageIO.read(fileTwo);   
41.            BufferedImage bufferedImageTwo = null; 
42.            if ("png".equalsIgnoreCase(postFix.toLowerCase())) { 
43.                bufferedImageTwo = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); 
44.            } else { 
45.                bufferedImageTwo = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
46.            } 
47.            bufferedImageTwo.getGraphics().drawImage(src.getScaledInstance(width, height,  Image.SCALE_SMOOTH), 0, 0,  null); 
48.            int[] imageArrayTwo = new int[width * height];// 从图片中读取RGB 
49.            imageArrayTwo = bufferedImageTwo.getRGB(0, 0, width, height, imageArrayTwo, 0, width); 
50.             
51.            //生成新图片 
52.            BufferedImage imageNew = new BufferedImage(width*2, height, BufferedImage.TYPE_INT_RGB); 
53.            imageNew.setRGB(0 , 0, width, height, imageArrayOne, 0, width);     //设置左半部分的RGB 
54.            imageNew.setRGB(width, 0, width, height, imageArrayTwo, 0, width);  //设置右半部分的RGB 
55.            File outFile = new File(mergeSrc); 
56.            //写图片 
57.            ImageIO.write(imageNew, postFix, outFile); 
58.        } catch (Exception e) { 
59.            e.printStackTrace(); 
60.        } 
61.    } 
62.     
63.    @Test 
64.    public void testMergeImage(){ 
65.        mergeImage("D:/source/image/1.jpg", "D:/source/image/2.png", "D:/source/image/3.png"); 
66.    } 
67.} 

猜你喜欢

转载自weitao1026.iteye.com/blog/2266117