我正在使用RescaleOp
来照亮我的形象,我的问题是,如果我使用黑色(0,0,0)和白色(255,255,255),它们会完全相同。
我可以猜到为什么,0(黑色RGB值)x 1.3(亮度因子)= 0,白色像素不能高于255因此它们保持不变,我对剩余的白色像素感到满意相同。
另一方面,如果我使图像变暗,我会得到所需的结果,因为白色像素变暗,255(白色RGB值)* .8(亮度系数)= / = 255,黑色像素不能低于0,所以它们保持不变。
如何使黑色像素变亮,就像BufferedImageOp使白色像素变暗一样?
这是重新缩放操作
float scale = 1.3f;//This is the aformentioned "Brightness Factor"
RescaleOp op = new RescaleOp(new float[] {scale,scale,scale, 1}, new float[4], null);
BufferedImage brightImage = op.filter(...);
感谢您当前的答案,但我不知道如何将它们应用于我的问题。
答案 0 :(得分:2)
您必须改为最大值。亮度因子代表什么并不明显,所以你可能不得不做一些试验和放大。错误研究在这里。一种方法可能是:
int newValue = (int) (255 - (255 / 1.3));
答案 1 :(得分:1)
任何乘以0的都是0.使用否定方法。
Maxvalue - (最大值/亮度系数)。
在你的情况下255-255 / 1.3。
将其存储在整数中。
答案 2 :(得分:0)
选项: