2016-12-04 12 views
-1

enter image description here如何將黑色添加到圖像,類似於Photoshop的功能?

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); 
      } 
} 

這是我的for循環改變亮度,而我試圖用一個類似添加黑人,但我不能拿出一個類似的算法上面的一個。

+0

你是什麼意思「添加黑色」 - 你必須明確解釋 – gpasch

+0

@gpasch在Adobe Bridge中有一個滑塊使深色變深,其被標記爲「黑色」,同時對較淺的顏色做出很小的改變。這就像對比度,但不會很輕鬆地修改較淺的顏色。 – Nexion21

+0

好吧我不使用Photoshop等,所以如果你有兩個圖像之前,我可以理解他們發佈在這裏 – gpasch

回答

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應用不同的截止閾值來創建有趣的效果。

相關問題