directory, photometricInterpretation, bitsPerPixel,
bitsPerSample, predictor, samplesPerPixel, width, height);
final TiffImageData imageData = directory.getTiffImageData();
final DataReader dataReader = imageData.getDataReader(directory,
photometricInterpreter, bitsPerPixel, bitsPerSample, predictor,
samplesPerPixel, width, height, compression, byteOrder);
BufferedImage result = null;
if (subImage != null) {
result = dataReader.readImageData(subImage);
} else {
final boolean hasAlpha = false;
final ImageBuilder imageBuilder = new ImageBuilder(width, height, hasAlpha);
dataReader.readImageData(imageBuilder);
result = imageBuilder.getBufferedImage();
}
return result;
}