在Java中将RGB char数组转换为RGB int值

时间:2010-09-21 20:30:58

标签: java

我有char[] rbg包含:

  • rgb[0]:红色值
  • rgb[1]:绿色值
  • rgb[2]:蓝色值

我想使用方法BufferedImage::setRGB(x, y, int rgb)

如何继续将char数组转换为int值?

注意:我使用Java

编辑:我正在寻找最快的解决方案

由于

4 个答案:

答案 0 :(得分:7)

int value = ((255 & 0xFF) << 24) | //alpha
            (((int)rgb[0] & 0xFF) << 16) | //red
            (((int)rgb[1] & 0xFF) << 8)  | //green
            (((int)rgb[2] & 0xFF) << 0); //blue

答案 1 :(得分:3)

import java.awt.Color;

Color color = new Color(rgb[0],rgb[1],rgb[2]);
int rgb = color.getRGB();

参考:http://download.oracle.com/javase/1.5.0/docs/api/java/awt/Color.html#getRGB%28%29

答案 2 :(得分:0)

int rgb2 = rgb[0] << 16 | rgb[1] << 8 | rgb[2];

也许你必须扭转指数的顺序。

答案 3 :(得分:-1)

BufferedImage buffImg = new BufferedImage(176, 144, BufferedImage.TYPE_INT_RGB);

            /*Setting RGB values to BufferedImage*/
            int[] raw = new int[rgbCameraData.length * 4 / 3];
            for (int i = 0; i < rgbCameraData.length / 3; i++) {
                raw[i] = 0xFF000000
                        | ((rgbCameraData[3 * i + 0] & 0xFF) << 16)
                        | ((rgbCameraData[3 * i + 1] & 0xFF) << 8)
                        | ((rgbCameraData[3 * i + 2] & 0xFF));
            }
            buffImg.setRGB(0, 0, 176, 144, raw, 0, 176);
            System.out.println("BufferedImage  :" + img);