图片合并

BufferedImage是具有可访问图像数据缓冲区的Image。BufferedImage由图像数据的ColorModel和Raster组成。Raster的SampleModel中band的数量和类型必须与ColorModel所要求的数量和类型相匹配,以表示其颜色和alpha分量。所有BufferedImage对象的左上角坐标都为(0, 0)。因此,用来构造BufferedImage的任何Raster都必须满足minX=0且minY=0。

    ColorModel抽象类封装了将像素值转换为颜色分量(例如,红色、绿色和蓝色)和alpha分量的方法。为
了将图像呈现到屏幕、打字机或其他图像上,必须将像素值转换为颜色和alpha分量。

    Raster表示像素矩形数组的类。Raster封装了存储采样值的DataBuffer和描述如何在DataBuffer中定位给定采样值的SampleModel。Raster定义了占据特定平面矩形区域的像素值,该区域不一定包括(0, 0)。该矩形也称为Raster的边界矩形,并且可通过getBounds方法来获得,它由minX、minY、width和height值定义。minX和minY值定义了Raster左上角的坐标。对边界矩形外部像素的引用可能导致抛出异常,也可能导致引用与Raster相关联的DataBuffer无关的元素。用户应该避免访问这种像素。

参数说明:
    image1:图像一
    image2:图像二
    posw:  合并x坐标
    posh:  合并y坐标
    file:  目标文件

函数代码:
public static boolean Merge(BufferedImage image1, BufferedImage image2, int posw, int posh, File fileOutput) {
  //合并两个图像
  int w1 = image1.getWidth();
  int h1 = image1.getHeight();
  int w2 = image2.getWidth();
  int h2 = image2.getHeight();
  BufferedImage imageSaved = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_ARGB);
  Graphics2D g2d = imageSaved.createGraphics();
  g2d.drawImage(image1, null, 0, 0);
  for (int i = 0; i < w2; i++) {
   for (int j = 0; j < h2; j++) {
    int _rgb1 = image1.getRGB(i + posw, j + posh);
    int _rgb2 = image2.getRGB(i, j);
    if (_rgb1 != _rgb2) {
     _rgb2 = _rgb1 & _rgb2;
    }
    imageSaved.setRGB(i + posw, j + posh, _rgb2);
   }
  }
  boolean b = false;
  try {
   b = ImageIO.write(imageSaved, "png", file);
  }
  catch (IOException ie) {
   ie.printStackTrace();
  }
  return b;
}

欢迎访问: http://52work.sinaapp.com

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值