문제

Java (RGB, HSV 및 Lab)의 컬러 모델간에 쉽게 변환하는 방법이 있습니까?

RGB 색상 모델을 가정합니다.

  • 흑체 스펙트럼 색상 팔레트를 어떻게 계산합니까? 열 맵 차트에 사용하고 싶습니다.
  • 단일 파장 스펙트럼은 어떻습니까?

편집하다: 나는 그것을 발견했다 색상 공간 클래스는 RGB/CIE와 다른 많은 컬러 모델 간의 변환에 사용할 수 있습니다.

도움이 되었습니까?

해결책

HSV 색상 모델을 사용하여 이러한 팔레트를 구축 할 수 있습니다. HSV에서 RGB 코드를 마련하고 몇 분 동안 숫자로 플레이하면 쉽습니다.

그러나 작은 팔레트를 생성하기 위해 프로젝트에 코드를 추가하는 것이 가치가 없다고 생각합니다.

파일에서 필요한 팔레트를 추출하고 정적 배열로 추가하는 것이 훨씬 쉽고 적은 작업입니다.

Photoshop은 팔레트를 편집하고 사전 설정으로 아주 멋진 흑체 팔레트와 함께 제공됩니다.

간단히 이것들을 .act 파일로 저장할 수 있습니다. 파일 자체는 단순한 256 Color Á 3 Byte 파일입니다 (순서는 읽기, 녹색, 파란색. 채널 당 8 비트)입니다.

다른 팁

Java에는 RGB에서 HSB 변환이 내장되어 있습니다. 자바에서 빠른 색상 팔레트가 필요할 때마다 나는 이것을한다.

public Color[] generateColors(int n)
{
    Color[] cols = new Color[n];
    for(int i = 0; i < n; i++)
    {
        cols[i] = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f);
    }
    return cols;
}

그것은 빠르고 더러운 해킹입니다 (앱의 '마법'숫자를 조정할 것입니다). 그러나 간단한 용도로는 밝은 유쾌한 팔레트가 생성됩니다.

어쩌면 나는 당신의 질문을 이해하지 못하지만 RGB 출력 장치에서 진정한 검은 색 스펙트럼을 생성 할 수는 없습니다. 제한된 컬러 색 영역은 다른 것이 없다면 문제가 될 것입니다. 당신이 원하는 모든 것이 검은 색 스펙트럼과 시각적으로 유사한 것이라면 아마 훨씬 쉬울 것입니다.

근사치로서, (r, g, b) (0,0,0)에서 (255,0,0)으로 (255,0,0)으로, (255,255,0)을이어서 (255,255,255)까지 램프로 램프로 선정되었습니다. 그것은 당신에게 둔한 빨강을 주황색, 노란색, 흰색 전환으로 줄 것입니다.

더 과학적인 것을 원한다면 Wikipedia 기사 흑체 방사선 색상 대 온도의 플롯이 있습니다. CIE 좌표를 알아 내면 좋아하는 색상 공간에서 RGB로 변환 할 수 있습니다.

편집 : 다른 온라인 참조를 찾았습니다.태양은 어떤 색입니까? 흑체는 무슨 색입니까?

이 색상 스펙트럼을 생성 할 수 있습니다 https://i.stack.imgur.com/ktlmt.jpg

다음 코드 사용 :

public void render(Screen screen) {
    int green = 255;
    int red = 0;

    for (int i = 0; i <= 255 * 2; i++) {
        int rate = i / 255;

        screen.fillRect((x + (i * width)/6), y, width, height, new Color(red, green, 0));

        red += 1 - rate;
        green -= rate;
    }   
}

이것은 AS3에서 HSL 컬러 스퀘어를 만드는 좋은 방법입니다.

/**
 * Generate a BitmapData HSL color square (n x n) of hue
 * At a low n dimension you get cool blocky color palettes (e.g. try n=10)
 */
function generateColorSquare(n:uint, hue:uint):BitmapData
            {
                var bd:BitmapData = new BitmapData(n, n, false, 0xFFFFFF);
                for (var i:uint=n*n; i > 0; i--)
                {
                    bd.setPixel(i % n, Math.floor(i / n),  HSBColor.convertHSBtoRGB(hue, i / (n*n), (1/n) * (i % n) ));
                }
                return bd;
            }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top