我有四个正方形的图像红色,绿色,蓝色和黄色。我需要获取每个正方形的 rgb 值。我能够获得整个图像的 rgb,但我想要它用于特定部分。
- 我将要获得的图像将来自相机并存储到 SDCard
我不知道我是否完全理解你,但它来了。
您需要创建 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);
我是这样弄的
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);