【发布时间】:2015-11-10 21:54:34
【问题描述】:
我有一个自定义的 RGB 类:
class RGB {
int R, G, B;
}
我制作了一个代表图像的 RGB 对象的二维数组:
RGB[][] image = new RGB[HEIGHT][WIDTH];
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
int pixel = bufferedImage.getRGB(i, j);
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
image[i][j] = new RGB(red, green, blue);
}
}
现在我想对该数组进行一些更改并将其保存为 BufferedImage。 基本上,我可以做这样的事情:
BufferedImage newImage = new BufferedImage(HEIGHT, WIDTH, BufferedImage.TYPE_INT_RGB);
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
newImage.setRGB(i, j, VALUE);
}
}
但我需要将每个像素的 RGB 字段转换为一个整数 VALUE,我不知道该怎么做。 或者也许有更简单的方法来做到这一点?
【问题讨论】:
-
为什么不只是
((red & 0xff) << 16) | ((green & 0xff) << 8) | (blue & 0xff) -
您是否考虑过使用DirectColorModel 对象而不是使用您的自定义RGB 类?看起来它会做你目前正在做的事情,并提供一种方法来获取你正在寻找的 int 值。
-
这成功了,谢谢。
标签: java image rgb bufferedimage