胖五,原文链接

正片叠底,在Photoshop中是一种混合模式,简单的说就是可以让2个图层的内容融合起来。

融合的计算公式其实非常简单,就是 A*B/255。(A、B是指的图层A和图层B)

再解释一下就是:

A图层中的红色通道和B图层中的红色通道所对应的每一个像素的灰阶值相乘,再被255除。得到一个新的红色通道。 蓝色与绿色通道的操作也是一样的。

    

某个通道的像素灰阶值其实就可以直接用其对应RGB值来代替,下面用代码来解释下这个过程。

先封装一个根据像素获取对应RGB数组的方法 后面会用到

public static int[] getRGB(int pixel) {int r = (pixel >> 16) & 0xff;int g = (pixel >> 8) & 0xff;int b = pixel & 0xff;return new int[]{r, g, b};
}

然后遍历图像像素,遍历过程点省略了,直接进入处理阶段


// 先获取两个图层同一位置的像素值
int pixelA = imgA.getRGB(x, y);
int pixelB = imgB.getRGB(x, y);// 获取两组RGB数组
int[] rgb1 = getRGB(pixelA);
int[] rgb2 = getRGB(pixelB);// 根据公式分别计算新的RGB值
int r = rgb1[0] * rgb2[0] / 255;
int g = rgb1[1] * rgb2[1] / 255;
int b = rgb1[2] * rgb2[2] / 255; // 获得正片叠底后的像素值
int pixelNew = new Color(r, g, b).getRGB();

拿到新像素后直接设置到新的图片中即可了。

这个方法已经被me封装好了,放到了Nutz的工具栏Images中,可以直接拿来调用,下面给出个Nutz的调用例子,可以拿来修改下直接用。

比如我们给金将军加个太阳:

// 先获取两张图片
BufferedImage imgA = Images.read(new File("金将军.jpg"));
BufferedImage imgB = Images.read(new File("大太阳.jpg"));// 正片叠底
BufferedImage imgMultiply = Images.multiply(imgA, imgB, 0, 0);// 输出到文件
Images.write(imgMultiply, new File("大太阳金将军.jpg"));

输出结果图:

当然了,这段代码其实也可以写成一行

Images.write(Images.multiply(Images.read(new File("金将军.jpg")), Images.read(new File("大太阳.jpg")), 0, 0), new File("大太阳金将军.jpg"));

是不是非常简单^_^

更多关于图像处理接口可以看Nutz的文档, 或许对你会有帮助。

  • 图片基本处理
  • 更高级的方法

Java图像处理之正片叠底相关推荐

  1. Java图像处理方面的工具库和开发包

    Java图像处理类库Java Image Filters Java Image Filters 是由 Jhlabs 开发的一组用来处理 Java 图像的类库,提供各种常用的图像处理效果,例如反转色.扭 ...

  2. java图像处理-(指定区域内)灰度化、透明化(alpha通道)处理

    java图像处理-(指定区域内)灰度化.透明化(alpha通道)处理 2016年07月25日 21:23:16 阅读数:3944 近日在一家小公司实习,老板要求我写一个图形编辑器,其中涉及到用java ...

  3. java毕业设计——基于java+图像处理技术的医学图像处理系统设计与实现(毕业论文+程序源码)——医学图像处理系统

    基于java+图像处理技术的医学图像处理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+图像处理技术的医学图像处理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  4. Java图像处理--------RGB调色面板

    Java图像处理--------RGB调色面板 一:概述 因为我们知道颜色是由R.G.B.三种颜色所组成的,那么我们只需要更改这三个的数值.我们就可以实现一个简单的调色面板:以下是代码演示: 二:代码 ...

  5. Java 图像处理教程(人脸检测,添加水印,图像颜色转换)

    Java 图像处理教程(人脸检测,添加水印,图像颜色转换) 文章目录 Java 图像处理教程(人脸检测,添加水印,图像颜色转换) 1:图片的读和写 2:彩色图像转换成灰度图像 3:彩色图像转换成负图像 ...

  6. java imageio处理图像_Linux geoserver调优之Java图像处理优化(原生JAI和ImageIO和java默认库相互转换)...

    注:geoserver 版本 Linux geoserver2.15.0    安装 :bin方式安装(内嵌jetty,非war安装) 一.geoserver调优之Java图像处理优化 1.原生JAI ...

  7. OpenCV3.2 Java图像处理视频学习教程-贾志刚-专题视频课程

    OpenCV3.2 Java图像处理视频学习教程-2434人已学习 课程介绍         OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java Ope ...

  8. JAVA图像处理——高斯模糊

    JAVA图像处理--高斯模糊 高斯模糊: 高斯模糊简单的说就是让图像的像素点取周围的像素点的平均,达到令图片模糊的效果. 当然,简单的取平均值是不太好的,因为一般与像素点距离近的像素点他们的颜色更接近 ...

  9. java 图像处理 空白_使用Java进行图像处理的一些基础操作

    图像是由一组像素构成,用二进制形式保存的图片.java语言支持gif.jpeg和bmp这3种主要图像文件格式.java语言的图像处理功能被封装在image类中. 图像载入和输出 在java程序中,图像 ...

最新文章

  1. Java三维数组的使用
  2. 2020倩女幽魂服务器正在维修,倩女幽魂手游2020年12月3日维护公告
  3. X3D.Studio编辑器界面介绍
  4. svn之check out没有下载so文件原因和解决办法
  5. ios html 转义字符串,ioS html的转义
  6. python-面向对象名词解析(类、实例、属性、方法、对象)
  7. 规划 SOA 参考架构
  8. linux jetty 配置文件,linux中Jetty的安装和配置方法
  9. 与计算机运算速度相关参数,计算机CPU运算速度是多少
  10. 韩顺平 jdbc 之 mysql,(韩顺平讲解)jdbc学习(四)---java连接mysql
  11. Linux配置本地端口映射
  12. ba无标度网络python_无标度网络-幂律分布
  13. 如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?
  14. 一个c语言程序多个源文件,链接多个C源文件
  15. 两道2016年美国高中数学竞赛题
  16. 2010最新网络语言
  17. Qt 实现画线笔锋效果详细原理
  18. 【区块链扩容】侧链技术 Plasma(Layer 2)
  19. 三大运营商URL欺骗;手机免费上网,测试,教程,服务器
  20. MES系统读取MySQL数据_MES系统数据库

热门文章

  1. 如何扫码填写数据?在线制作表单二维码的方法
  2. 经典题目——n阶幻方
  3. 『航班乘客满意度』场景数据分析建模与业务归因解释 ⛵
  4. vue 拼接html,vue.js中怎么拼接字符串?
  5. 随笔 javascript-抽象工厂模式
  6. Linux 端口打开 关闭
  7. Microsoft Project 开发
  8. 二建考完,直接备考下半年一建,有什么好的建议?
  9. QT中使用moveToThread
  10. 《定义一个学生基本情况的类——C#第四周》