Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 794|回复: 0

java合并2张图片 实例

[复制链接]

该用户从未签到

发表于 2011-9-18 13:02:44 | 显示全部楼层 |阅读模式
import java.io.File;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class test {
public static void main(String args[]) {
  try {
   // 读取第一张图片
   File fileOne = new File("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("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("out.jpg");
   ImageIO.write(ImageNew, "jpg", outFile);// 写图片
   }catch (Exception e) {
      e.printStackTrace();
   }
  }
/**合并多张图片
* Merge all pics in one
* #############
* # pic1 #
* #############
* # pic2 #
* #############
* # pic3 #
* #############
*
* @param pics
* @param dst_pic
* @return
*/
public static boolean merge(String[] pics, String dst_pic, String type) {
int len = pics.length;
if (len < 1) {
  System.out.println("pics len < 1");
  return false;
  }

File[] src = new File[len];
  BufferedImage[] images = new BufferedImage[len];
int[][] ImageArrays = new int[len][];
for (int i = 0; i < len; i++) {
  try {
   src = new File(pics);
   images = ImageIO.read(src);
  } catch (Exception e) {
    e.printStackTrace();
    return false;
  }
int width = images.getWidth();
int height = images.getHeight();
ImageArrays = new int[width * height];// 从图片中读取RGB
ImageArrays = images.getRGB(0, 0, width, height,
ImageArrays, 0, width);
}
int dst_height = 0;
for (int i = 0; i < images.length; i++)
dst_height += images.getHeight();
if (dst_height < 1) {
System.out.println("dst_height < 1");
return false;
}
// 生成新图片
try {
int dst_width = images[0].getWidth();
BufferedImage ImageNew = new BufferedImage(images[0].getWidth(),dst_height, BufferedImage.TYPE_INT_RGB);
int height_i = 0;
for (int i = 0; i < images.length; i++) {
ImageNew.setRGB(0, height_i, dst_width, images.getHeight(),ImageArrays, 0, dst_width);
height_i += images.getHeight();
}
File outFile = new File(dst_pic);
ImageIO.write(ImageNew, type, outFile);// 写图片
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 02:19 , Processed in 0.368766 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表