The problem is, once it's in memory, it's a BufferedImage. So anything TIFF-specific is lost.
The closest I can think of is the
ImageJ library. Its ij.io.TiffDecoder can create an ij.io.FileInfo object which has lots of information like color depth, image size, number of images, compression method etc. It doesn't support all possible compression methods, though.
If you feel really adventurous, source code that can read a wider range of TIFF images can be
found here.