2011-12-08 4 views
1

16 비트 PNG를 만들려고 시도했지만 임무를 얻지 못한다. 또한 어떻게 255,255,255/r, g, b로 정의 된 8 비트 컬러를 16 비트 컬러로 변환 할 수 있습니까?어떻게 Java로 16 비트 그레이 스케일 이미지를 만듭니 까

BufferedImage bi = new BufferedImage(256, 256, 
      BufferedImage.TYPE_USHORT_GRAY); 

    // 65536 
    for (int i = 0; i < 256; i++) 
     for (int j = 0; j < 256; j++) { 
      int mask = 0xf0 
      int value = 255 & mask; // zero other bits 
      value >>= 16; 
      bi.setRGB(i, j, value); 
      // bi.setRGB(i, j, 65536); 
     } 

    File f = new File("gray.png"); 

    try { 
     ImageIO.write(bi, "png", f); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

답변

1

라인 value >>= 16은 0으로 설정합니다.

24 비트 RGB에서 16 비트 색상으로 변환하는 데는 일반적으로 RGB565와 RGB555 두 가지가 있습니다. 숫자는 각 색상 구성 요소에 주어진 비트 수를 나타냅니다.

0

이 문제의 해결책은 아니지만 요구 사항을 달성하는 다른 방법입니다.

BufferedImage bi = new BufferedImage(256, 256, BufferedImage.TYPE_USHORT_GRAY); 

Graphics2D g = bi.createGraphics(); 
g.setColor(Color.GRAY); 

g.fillRect(0,0,256,256); 
File f = new File("C:/gray.png"); 

try { 
    ImageIO.write(bi, "png", f); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

죄송합니다. 내 컴퓨터가 아니므로 8 비트 또는 16 비트 PNG가 생성되는지 여부를 알려주세요. 감사! – user1088777

+0

@ user1088777 잘 모르겠습니다. [여기] (http://stackoverflow.com/q/4116858/862441) 도움이 될 수있는 관련 질문입니다. – srkavin

관련 문제