我有一个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循环,我正在尝试使用类似的方法来添加黑色,但是我无法提出与上述算法类似的算法。
为此,您需要一种截断方法/功能:找到接近或非常接近黑色的颜色(所有颜色分量都必须低于某个阈值),然后将它们完全变为黑色:
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,您可以创建有趣的效果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句