diff --git a/src/bigtiffimage.cpp b/src/bigtiffimage.cpp index 8e07e8c7..dea8195e 100644 --- a/src/bigtiffimage.cpp +++ b/src/bigtiffimage.cpp @@ -38,9 +38,29 @@ namespace Exiv2 return Image::AutoPtr(new BigTiffImage(io)); } - bool isBigTiffType(BasicIo &, bool) + bool isBigTiffType(BasicIo& io, bool) { - return false; + byte header[2]; + io.read(header, 2); + + ByteOrder byteOrder = invalidByteOrder; + if (header[0] == 'I' && header[1] == 'I') + byteOrder = littleEndian; + else if (header[0] == 'M' && header[1] == 'M') + byteOrder = bigEndian; + + bool isBigTiff = false; + if (byteOrder != invalidByteOrder) + { + byte version[2]; + io.read(version, 2); + + const uint16_t magic = getUShort(version, byteOrder); + + isBigTiff = magic == 0x2A || magic == 0x2B; + } + + return isBigTiff; } }