当前位置:首页 > 开发 > 编程语言 > Java > 正文

使用Java合并两个图像的方法

发表于: 2012-03-26   作者:一刀3段   来源:转载   浏览:
摘要: BufferedImage是具有可访问图像数据缓冲区的Image。BufferedImage由图像数据的ColorModel和Raster组成。Raster的SampleModel中band的数量和类型必须与ColorModel所要求的数量和类型相匹配,以表示其颜色和alpha分量。所有BufferedImage对象的左上角坐标都为(0, 0)。因此,用来构造BufferedImage的任何Ras
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;
 }


测试通过使用。

使用Java合并两个图像的方法

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
package cs.edu.hust.cs.j2se.test; import java.io. *; //Java基础包,包含各种IO操作 import java
CSS Sprites 是一个吸引人的技术,它其实就是把网页中一些背景图片整合到一张图片文件中,再利用 CS
第一步:将需要剪切的图像图像不部分设置为ROI cvSetImageROI(src , cvRect(x,y,width,height)); 第
#include<iostream> #include<vector> using namespace std; #define SIZE_A 2 #define
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如下图
思路: 跟替换字符串中的空格一样,都是从后往前遍历。因为从前往后遍历的话,元素需要移动的次数较
两个有意思的函数图像 1产生类似烟效果的函数: 最近主要在看粒子系统,比如烟,雾等自然状态的描拟
今天遇到一个问题: 要给下拉框添加一个选项(用的是 ligerui 实现的), 下拉框的数据是通过 ajax从后
2. 区域分裂合并 区域分裂合并算法的基本思想是先确定一个分裂合并的准则,即区域特征一致性的测度,
http://blog.csdn.net/zhuyong0722/article/details/8965095 转自:http://tangzhifei.iteye.com/bl
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号