는 여기에 당신은 휘도 Y와 색 좌표 X, Y에 전달하는 위키 백과 페이지 http://en.wikipedia.org/wiki/SRGB_color_space
private int makeARGB(double Y, double x, double y) {
// Out of gamut colour
int rgb = 0xFF808080;
double X = Y * x/y;
double Z = Y * (1 - x - y)/y;
double rlin = +3.2046 * X + -1.5372 * Y + -0.4986 * Z;
double r = gamma(rlin);
int ir = (int) (r * 255.0);
if (ir >= 0 && ir < 256) {
double glin = -0.9689 * X + +1.8758 * Y + +0.0415 * Z;
double g = gamma(glin);
int ig = (int) (g * 255.0);
if (ig >= 0 && ig < 256) {
double blin = +0.0557 * X + -0.2040 * Y + +1.0570 * Z;
double b = gamma(blin);
int ib = (int) (b * 255.0);
if (ib >= 0 && ib < 256) {
rgb = 0xFF000000 + (ir << 16) + (ig << 8) + (ib << 0);
}
}
}
return rgb;
}
private double gamma(double l) {
if (l < 0.0031308) {
return l * 12.92;
} else {
return 1.055 * Math.pow(l, 1.0/2.4) - 0.055;
}
}
private BufferedImage createImage() {
BufferedImage bm = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB);
for (int ix = 0; ix < bm.getWidth(); ++ix) {
double astar = ((double) ix)/((double) bm.getWidth());
for (int iy = 1; iy < bm.getHeight(); ++iy) {
double bstar = ((double) iy)/((double) bm.getHeight());
int rgb = makeARGB(0.3, astar, bstar);
bm.setRGB(ix, iy, rgb);
}
}
return bm;
}
보고에서 지금 막 쓴 작은 기능입니다. x와 y는 일반적으로 0..1입니다. 그러나 '공간'은 sRGB 영역에 없기 때문에 표시 가능한 색상과 일치하지 않습니다. Y도 0..1입니다. 처음에는 0.3..0.5를 시도하십시오.
예 이미지 : 내가 구글 애플 리케이션 엔진에 대해 아무것도 몰라하지만, ARGB 정수는 당신이 필요로하는 색상 사양의 종류
?
실험실 색상 공간을 고려 했습니까? – Rekin
예, 유망 해 보입니다. 그러나 나는 그것에 더 많은 시간을 할애해야 할 것입니다. 솔루션을 찾고 있으므로이 주제에 대해 더 많은 시간을 할애 할 필요가 없습니다. – hakunin
차트에서 빨간색과 녹색 음영을 구분하기 위해 대부분 루미넌스를 사용하는 색맹 인 사람들에게 유용성 악몽을 불러 일으키고 있음을 명심하십시오. – ddimitrov