1

我有四个正方形的图像红色,绿色,蓝色和黄色。我需要获取每个正方形的 rgb 值。我能够获得整个图像的 rgb,但我想要它用于特定部分。

  • 我将要获得的图像将来自相机并存储到 SDCard
4

3 回答 3

2

我不知道我是否完全理解你,但它来了。

您需要创建 BufferedImage 对象来获取 RGB 值:

File f = new File(yourFilePath);
BufferedImage img = ImageIO.read(f);

您可以从那时起从图像中获取 RGB 颜色值。你有 4 个方格;要检查它们的 RGB 值,您可以检查角像素的 RGB 值:

Color leftTop = new Color(img.getRGB(0, 0));
Color rightTop = new Color(img.getRGB(img.getWidth - 1, 0));
Color leftBottom = new Color(img.getRGB(0, img.getHeight - 1));
Color rightBottom = new Color(img.getRGB(img.getWidth - 1, img.getHeight - 1));

之后,很容易分别获得红色、绿色和蓝色值:

int red = leftTop.getRed();
int green = leftTop.getGreen();
int blue = leftTop.getBlue();

编辑: 我真的很抱歉,我没有看到它适用于 Android。正如你所说,Android 没有 ImageIO 类。要在 Android 中完成任务,首先初始化图像:

Bitmap img = BitmapFactory.decodeFile(yourFilePath);

从那时起,操作几乎相同:

int leftTop = img.getPixel(0, 0);
...

int red = Color.red(pixel);
int blue = Color.blue(pixel);
int green = Color.green(pixel);
于 2013-05-20T05:40:44.320 回答
1

使用来裁剪图像。

现在要检测图像的颜色,从正方形中取出一个像素并用this检测它的颜色。

找到 RGB 值后,使用一个简单的条件语句来查看方块是红蓝还是绿。

于 2013-05-20T07:19:09.457 回答
0

我是这样弄的

int topLeftIndex = squareImage.getPixel(0, 0);
int R1 = (topLeftIndex >> 16) & 0xff;
int G1 = (topLeftIndex >> 8) & 0xff;
int B1  = topLeftIndex  & 0xff;

和同样的方式

int bottomLeftIndex=squareImage.getPixel(0, picHeight - 1);
int topRightIndex=squareImage.getPixel(picWidth -1 , 0);
int bottomRightIndex=squareImage.getPixel(picWidth -1, picHieght - 1);
于 2013-05-21T08:20:05.290 回答