2012-06-15 2 views
3

이미지가 RGB 회색 음영으로 변환되었습니다.
그레이 스케일 이미지는 변환을 정의하기 위해 수행되는 배열로 변환됩니다. 결과적으로 배열은 "0"과 "255"로 구성됩니다.배열에서 BufferedImage 로의 잘못된 변환

그런 다음이 배열을 BufferedImage로 변환해야합니다. 상기 방법을 수행 한 후, 그러나

public static BufferedImage getImageFromArray(int pixelsMain[][], int width, int height) throws IOException { 

     int pixels[] = new int[320*240]; 

     for(int i=0, numb=0; i<pixelsMain.length; i++) 
      for(int j=0; j<pixelsMain[i].length; j++){ 
       pixels[numb]=pixelsMain[i][j]; 
       numb++; 
      } 

     BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY); 
     WritableRaster raster = (WritableRaster) image.getData(); 
     raster.setPixels(0,0,width,height,pixels); 
     try { 
      ImageIO.write(image, "bmp", new FileOutputStream("[path]")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return image; 
    } 

- "255"의 모든 값으로 변환 "-1"

는 I 코드를 사용했다.

결과적으로 이미지는 완전히 검은 색입니다.

문제점을 해결하는 방법을 알려주십시오.

+0

255라고 했습니까? 그것은 단지 해석입니다 : 255 unsigned char == -1 signed char –

+0

사실입니다) correct) 번역이 맞다면 - 어떤 이유로 이미지가 검은 색 사각형으로 디스크에 기록됩니까? – TorchTT

답변

4

(WritableRaster)image.getData() 대신 image.getRaster()을 사용하십시오. 후자는 복사본을 만들므로 복사본을 변경하면 아무 효과가 없습니다.

+0

작동) 감사) – TorchTT