Java 读取tiff光栅数据

Java 读取tiff光栅数据,java,tiff,gdal,Java,Tiff,Gdal,我正在使用以下方法读取2048X2048像素的tiff文件: private static int[][] convertTo2DWithoutUsingGetRGB(BufferedImage image) { final short[] pixels = ((DataBufferUShort) image.getRaster().getDataBuffer()).getData(); int[][] data = new int[2048][2048]; int

我正在使用以下方法读取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;
}   

我只得到正值。在上面的java方法中,是否需要对原始值进行处理,使其成为tiff图像的有效像素?

不确定原因,但通过在值中添加65536(如果为负值)解决了问题

int j = pixels[i];
if (j < 0) {
    j += 65536;
}
data[col][row] = j;
intj=像素[i];
if(j<0){
j+=65536;
}
数据[col][row]=j;
int j = pixels[i];
if (j < 0) {
    j += 65536;
}
data[col][row] = j;