博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java的实现图片合并
阅读量:4189 次
发布时间:2019-05-26

本文共 2641 字,大约阅读时间需要 8 分钟。

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.}

转载地址:http://aknoi.baihongyu.com/

你可能感兴趣的文章
FileSplit:文件的子集--文件分割体
查看>>
使用Hadoop的MapReduce来完成大表join
查看>>
常用的算法
查看>>
Mina框架
查看>>
Spring MVC 和 Servlet 一样,都不是线程安全的
查看>>
Java线程:线程的同步与锁
查看>>
Mac、Windows可以互相远程
查看>>
oracle提示 ORA-12154: TNS: 无法解析指定的连接标识符
查看>>
oracle 插入数据时提示没有足够的值
查看>>
Oracle Net Manager的使用及配置
查看>>
镜像文件
查看>>
苹果笔记本桌面下面的工具栏没了怎么调出来
查看>>
CSS原理与CSS经验分享
查看>>
oracle中int与number的区别
查看>>
php不用jsonp也能跨域
查看>>
solr作为一种开源的搜索服务器
查看>>
Pig分析数据过程
查看>>
linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
查看>>
pentaho套件
查看>>
软件产品经理职责
查看>>