'Overload method triggered when we detect a compressed tiff
Calls out to libtiff'

def _load_libtiff(self):

    pixel = Image.Image.load(self)
    if (self.tile is None):
        raise IOError('cannot    load    this    image')
    if (not self.tile):
        return pixel
    self.load_prepare()
    if (not (len(self.tile) == 1)):
        raise IOError('Not    exactly    one    tile')
    extents = self.tile[0][1]
    args = (list(self.tile[0][3]) + [self.tag_v2.offset])
    try:
        fp = (hasattr(self.fp, 'fileno') and os.dup(self.fp.fileno()))
        if hasattr(self.fp, 'flush'):
            self.fp.flush()
    except IOError:
        fp = False
    if fp:
        args[2] = fp
    decoder = Image._getdecoder(self.mode, 'libtiff', tuple(args), self.decoderconfig)
    try:
        decoder.setimage(self.im, extents)
    except ValueError:
        raise IOError("Couldn't    set    the    image")
    if hasattr(self.fp, 'getvalue'):
        if DEBUG:
            print('have    getvalue.    just    sending    in    a    string    from    getvalue')
        (n, err) = decoder.decode(self.fp.getvalue())
    elif hasattr(self.fp, 'fileno'):
        if DEBUG:
            print('have    fileno,    calling    fileno    version    of    the    decoder.')
        self.fp.seek(0)
        (n, err) = decoder.decode('fpfp')
    else:
        if DEBUG:
            print("don't    have    fileno    or    getvalue.    just    reading")
        (n, err) = decoder.decode(self.fp.read())
    self.tile = []
    self.readonly = 0
    if self._exclusive_fp:
        if ((self.__frame == 0) and (not self.__next)):
            self.fp.close()
            self.fp = None
    if (err < 0):
        raise IOError(err)
    return Image.Image.load(self)
