资讯专栏INFORMATION COLUMN

Java图像处理之正片叠底

stackvoid / 1534人阅读

摘要:胖五,原文链接正片叠底,在中是一种混合模式,简单的说就是可以让个图层的内容融合起来。是指的图层和图层再解释一下就是图层中的红色通道和图层中的红色通道所对应的每一个像素的灰阶值相乘,再被除。得到一个新的红色通道。图片基本处理更高级的方法

胖五,原文链接

正片叠底,在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的文档, 或许对你会有帮助。

图片基本处理

更高级的方法

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70611.html

相关文章

  • mix-blend-mode及background-blend-mode实现炫酷的图片样式

    摘要:在网上看到了有如相机功能的实现比较好看的图片样式,自己也想弄下,在这里记录下效果图相关属性正常正片叠底滤色叠加变暗变亮颜色减淡颜色加深强光柔光差值排除色相饱和度颜色 在网上看到了有如相机功能的mix-blend-mode实现比较好看的图片样式,自己也想弄下,在这里记录下 1.效果图 showImg(https://segmentfault.com/img/bVblsM0?w=726&...

    gougoujiang 评论0 收藏0
  • mix-blend-mode及background-blend-mode实现炫酷的图片样式

    摘要:在网上看到了有如相机功能的实现比较好看的图片样式,自己也想弄下,在这里记录下效果图相关属性正常正片叠底滤色叠加变暗变亮颜色减淡颜色加深强光柔光差值排除色相饱和度颜色 在网上看到了有如相机功能的mix-blend-mode实现比较好看的图片样式,自己也想弄下,在这里记录下 1.效果图 showImg(https://segmentfault.com/img/bVblsM0?w=726&...

    jackwang 评论0 收藏0
  • 更丰富的网页多图层效果:css混合模式

    摘要:与绘制顺序密切相关的概念是层叠上下文。把正常也算上的话,现在网页里可用的混合模式一共种。因此,正片叠底是一个变暗的混合模式。需要注意的是,其中这个位于最下层的背景该元素无背景色,它的混合模式其实是没有作用的,可以认为就是默认值。 图层 在Photoshop等图像编辑软件里,图层是最基础的概念之一。我们平时看一张照片,就可能想到远处的背景、近处的人物这样的描述,这其实就是在划分图层。多个...

    Ku_Andrew 评论0 收藏0
  • CSS3mix-blend-mode

    摘要:属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合。正常正片叠底滤色叠加变暗变亮颜色减淡颜色加深强光柔光差值排除色相饱和度颜色亮度初始继承复原 属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合。 mix-blend-mode: normal; /...

    wangjuntytl 评论0 收藏0
  • CSS3mix-blend-mode

    摘要:在线编辑属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合。正常正片叠底滤色叠加变暗变亮颜色减淡颜色加深强光柔光差值排除色相饱和度颜色亮度初始继承复原在线编辑参考资料原文地址 showImg(https://segmentfault.com/img/remote/1460000014766135); 在线编辑demo 属性描述了元素的内容应该与元素的直系父元素的内容...

    stdying 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<