我正在使用以下方法读取 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 与 python 一起使用,例如,我的数组上总是会出现负值:
import gdal # Tiff Image Read
def getArrayFromImage(fileName):
img = gdal.Open(fileName)
return img.ReadAsArray().astype(int)
我只得到积极的价值观。在上面的 java 方法中,是否需要对原始值进行处理才能成为 tiff 图像的有效像素?