如何将黑色添加到图像中,类似于Photoshop的功能?

时间:2016-12-04 05:00:05

标签: java image-processing

enter image description here

enter image description here我有一组rgb值,我想直接修改这些值而不是使用RescaleOp,因为我有更多的控制方式。

for (int x = 0; x < image.getWidth(); x++) {
            for (int y = 0; y < image.getHeight(); y++) {
                int[] rgb = image.getRGB([x][y]);
                rgb[0] *= Math.pow(2, desiredBrightness);
                rgb[1] *= Math.pow(2, desiredBrightness);
                rgb[2] *= Math.pow(2, desiredBrightness);
            }
}

这是我用于修改亮度的循环,我试图使用类似的添加黑色,但我不能提出与上面相似的算法。

1 个答案:

答案 0 :(得分:1)

为此,您需要一种截止方法/功能:您会发现接近或非常接近黑色的颜色(所有颜色成分必须低于某个阈值)并且您将它们完全变为黑色:

addBlacks(int blackThreshold) {
  for (x = 0; x < image.getWidth(); x++) {
    for (y = 0; y < image.getHeight(); y++) {
      int rgb = bim.getRGB(x, y)&0x00ffffff;
      int rr=(rgb&0x00ff0000)>>16, rg=(rgb&0x0000ff00)>>8, rb=rgb&0x000000ff;
    if(rr<blackThreshold && rg<blackThreshold && rb<blackThreshold)
      rr=rg=rb=0;
    b2.setRGB(x, y, 0xff000000|(rr<<16)|(rg<<8)|rb);
  }
}    

在35岁时你应该开始看到效果,并且在55岁的情况下,你必须使用给定的图像。您可以通过对不同的组件R,G,B应用不同的截止阈值来创建有趣的效果。