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.}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值