2013-06-18 7 views
0

나는 아래의 방법을 사용하여 최대 2048x2048 픽셀의 TIFF 파일을 읽고 있어요 :읽기 티파니 래스터 데이터

private static int[][] convertTo2DWithoutUsingGetRGB(BufferedImage image) { 

    final short[] pixels = ((DataBufferUShort) image.getRaster().getDataBuffer()).getData(); 

    int[][] data = new int[2048][2048]; 

    int col = 0; 
    int row = 0; 
    int blockSize = 2048; 
    for (int i=0; i<pixels.length; i++) { 
     data[col][row] = pixels[i]; 
     row++; 
     if (row == blockSize) { 
      col++; 
      row = 0; 
     } 
    } 

    return data; 
} 

을하지만 파이썬 함께 GDAL를 사용하는 경우 내가 예를 들어, 내 배열에 음의 값을 점점 계속 :

import gdal # Tiff Image Read 

def getArrayFromImage(fileName): 
    img = gdal.Open(fileName) 
    return img.ReadAsArray().astype(int) 

나는 양수 값만 얻습니다. 위의 자바 메서드에서 원시 값에서 tiff 이미지의 유효한 픽셀이 필요한 처리가 있습니까?

답변

1

이유는 확실하지 않지만 음수 인 경우 값에 65536을 추가하여 문제를 해결했습니다.

int j = pixels[i]; 
if (j < 0) { 
    j += 65536; 
} 
data[col][row] = j; 
관련 문제