private TiffHeader readTiffHeader(final InputStream is) throws ImageReadException, IOException {
final int byteOrder1 = readByte("BYTE_ORDER_1", is, "Not a Valid TIFF File");
final int byteOrder2 = readByte("BYTE_ORDER_2", is, "Not a Valid TIFF File");
if (byteOrder1 != byteOrder2) {
throw new ImageReadException("Byte Order bytes don't match (" + byteOrder1 + ", " + byteOrder2 + ").");
}
final ByteOrder byteOrder = getTiffByteOrder(byteOrder1);
setByteOrder(byteOrder);
final int tiffVersion = read2Bytes("tiffVersion", is, "Not a Valid TIFF File", getByteOrder());
if (tiffVersion != 42) {
throw new ImageReadException("Unknown Tiff Version: " + tiffVersion);
}
final long offsetToFirstIFD =
0xFFFFffffL & read4Bytes("offsetToFirstIFD", is, "Not a Valid TIFF File", getByteOrder());