我有一组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);
}
}
这是我用于修改亮度的循环,我试图使用类似的添加黑色,但我不能提出与上面相似的算法。
答案 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应用不同的截止阈值来创建有趣的效果。