`

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

    博客分类:
  • java
阅读更多
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将多张图片合成为一张图像.rar

    Java将多张图片合成为一张,类似于PhotoShop中的合成图片,将两张图片合成输出为一张JPG,两幅图像叠加在一起,这是个比较基础的Java图像合成的例子。在JAVA中实现图片合成,本例的实现核心代码如下:  InputStream...

    java源码包---java 源码 大量 实例

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    java源码包4

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    java源码包3

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目源代码

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    java源码包2

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器 Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法: 可直接...

    Java为图片添加水印功能.rar

    Java为图片添加水印功能,这个水印类的操作比较实用,不但可以旋转水印图像,还可设置其水印图片的透明度,使其与原图融为一体,给图片添加水印,可以设置图片水印的角度,设置对线段的锯齿状边缘处理,第一参数-&gt;...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器 Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法: 可直接...

    基于opencv3.1库的JAVA源码

    范例5-17-2合并两个影像,使用不规则形状 161 第6章 使用核矩阵进行影像处理 165 范例6-1-1 Mean filter处理 165 范例6-2-1 Prewitt Filter处理 167 范例6-3-1 Laplacian Filter处理1 170 范例6-3-2 Laplacian Filter...

    JAVA多媒体开发手册 JMF API

    ● Manager:Manager相当于两个类之间的接口。例如当你需要播放一个DataSource对象,你可以通过使用Manager对象创建一个Player对象来播放它。使用Manager对象可以创建Player、Processor、DataSource和DataSink对象。...

    java范例开发大全源代码

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12 ...

    java范例开发大全

    实例272 判断两个网址的主机名是否一样 536 实例273 测试IP的类型 537 实例274 查找主机 538 实例275 主机所支持的协议 539 15.2 URL类的使用 540 实例276 使用URL访问网页 540 实例277 URL的组成部分 541 实例278 ...

    Java范例开发大全 (源程序)

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5...

    Java范例开发大全(全书源程序)

    实例256 带两个类型参数的泛型 513 实例257 有界类型程序示例 514 实例258 通配符使用示例 515 实例259 泛型方法使用示例 516 实例260 泛型接口示例 518 实例261 泛型实现坐标打印 519 14.2 泛型类的继承 521...

    java范例开发大全(pdf&源码)

    实例256 带两个类型参数的泛型 513 实例257 有界类型程序示例 514 实例258 通配符使用示例 515 实例259 泛型方法使用示例 516 实例260 泛型接口示例 518 实例261 泛型实现坐标打印 519 14.2 泛型类的继承 521 实例...

    AC3-Layer-Merger:与其他两个TIM的合并图像数据一起生成TIM

    TIM_layer1和TIM_layer2是要通过两个CLUT(output_file)合并到TIM中的TIM文件。 不要尝试将TIM文件与多个CLUT合并,结果将不会很漂亮。 抱歉,该程序不支持批量处理。 文件路径是相对于程序所在的文件夹而言的,...

Global site tag (gtag.js) - Google Analytics