0

使用 Java 编辑:以及除 ImageMagick/JMagick 之外的良好图像库:

我想从所有像素的 RGB 值中减去一个标量(比如 100)(最低为零)。这有效地使图像变暗。

例如,对于具有R: 20 G: 103 B: 200的给定像素,在减去该像素之后,该像素应该是R: 0 G: 3 B: 100(再次,我想在所有像素上快速有效地执行此操作,而不仅仅是一)

我已经尝试过使用 ImageMagick 并得到不精确的结果 - 减法准确并且没有舍入错误等至关重要。还有其他擅长这个的图书馆吗?是否有其他选项不处理迭代 RGB 值数组?

4

2 回答 2

2

该类BufferedImage具有可作用于单个像素或像素数组的agetRGB()和方法。setRGB()

http://docs.oracle.com/javase/6/docs/api/java/awt/image/BufferedImage.html

于 2012-08-14T19:04:21.300 回答
2

试试这个:如果 R 或 G 或 B 是负数,那么你可以将其设为 0。

//At first get the RGB value
int RGB=getRGB(x,y);
int R=RGB>>>16-100; //shift by 16 bit to get the R value
if(R<0) R=0;
int G=(RGB<<<8)>>>16-100;//clear the preceding numbers than shift 16 bit
if(G<0) G=0;
int B=(RGB<<<16)>>>16-100;
if(B<0)B=0;
int newRGB=R<<<16+G<<<8+B;
setRGB(x,y,newRGB);
于 2012-08-14T19:58:03.367 回答