web-dev-qa-db-ja.com

RGB値を整数に変換

したがって、BufferedImageでは、RGB値が表現された単一の整数を受け取ります。これまでのところ、RGB値を取得するために以下を使用します。

_// rgbs is an array of integers, every single integer represents the
// RGB values combined in some way
int r = (int) ((Math.pow(256,3) + rgbs[k]) / 65536);
int g = (int) (((Math.pow(256,3) + rgbs[k]) / 256 ) % 256 );
int b = (int) ((Math.pow(256,3) + rgbs[k]) % 256);
_

そしてこれまでのところ、それは動作します。

私がする必要があるのは整数を取得する方法を図に示しますです。したがって、BufferedImage.setRGB()を使用できます。

47
Rahat Ahmed

コードは次のようなものだと思います:

int rgb = red;
rgb = (rgb << 8) + green;
rgb = (rgb << 8) + blue;

また、以下を使用して個々の値を取得できると思います。

int red = (rgb >> 16) & 0xFF;
int green = (rgb >> 8) & 0xFF;
int blue = rgb & 0xFF;
87
camickr
int rgb = ((r&0x0ff)<<16)|((g&0x0ff)<<8)|(b&0x0ff);

R、g、bの値が> 255または<0にならないことがわかっている場合、&0x0ffは必要ありません。

追加的に

int red = (rgb>>16)&0x0ff;
int green=(rgb>>8) &0x0ff;
int blue= (rgb)    &0x0ff;

乗算する必要はありません。

26
KitsuneYMG
int rgb = new Color(r, g, b).getRGB();
20
Nicholas

r、g、b =各色の0〜255の3つの整数値の場合

それから

rgb = 65536 * r + 256 * g + b;

単一のrgb値は、合計16777216の可能なシェードを組み合わせたr、g、bの複合値です。

19
Jay

個々の色の値を取得するには、pixel(x、y)に対して次のようなColorを使用できます。

import Java.awt.Color;
import Java.awt.image.BufferedImage;

Color c = new Color(buffOriginalImage.getRGB(x,y));
int red = c.getRed();
int green = c.getGreen();
int blue = c.getBlue();

上記は、0〜255の範囲の赤、緑、青の整数値を提供します。

RGBから値を設定するには、次のようにします。

Color myColour = new Color(red, green, blue);
int rgb = myColour.getRGB();

//Change the pixel at (x,y) ti rgb value
image.setRGB(x, y, rgb);

上記は単一ピクセルの値を変更することに注意してください。したがって、画像全体の値を変更する必要がある場合は、2つのforループを使用して画像を反復処理する必要があります。

3
Ajay Sant