diff --git a/anonymize-slide.py b/anonymize-slide.py index 22f462c..2f2b47e 100755 --- a/anonymize-slide.py +++ b/anonymize-slide.py @@ -229,6 +229,7 @@ def value(self): else: # Out-of-line value self._fh.seek(self._fh.near_pointer(self.start, self.value_offset)) + self.realstart = self._fh.tell() items = self._fh.read_fmt(fmt, force_list=True) if self.type == ASCII: if items[-1] != '\0': @@ -236,7 +237,11 @@ def value(self): return ''.join(items[:-1]) else: return items - + + def spaceout(self, position, length): + self._fh.seek(self.realstart + position) + self._fh.write(' ' * length) + class MrxsFile(object): def __init__(self, filename): @@ -488,6 +493,35 @@ def do_aperio_svs(filename): else: raise IOError("No label in SVS file") +def do_philips_tif(filename): + with TiffFile(filename) as fh: + # Check for TIF file + try: + desc0 = fh.directories[0].entries[IMAGE_DESCRIPTION].value() + except KeyError: + raise UnrecognizedFile + + # Find and delete labels + found=False + for directory in fh.directories: + desc = directory.entries[IMAGE_DESCRIPTION].value() + if desc.find("LABELIMAGE") != -1: + pos = desc.find('') + while pos != -1: + endpos=desc.find("") + labelpos = desc.find("LABELIMAGE") + if (labelpos < endpos and labelpos > pos): + print "found it at %d"%pos + directory.entries[IMAGE_DESCRIPTION].spaceout(pos, endpos-pos) + found=True + pos = desc.find('', endpos) + if desc == "Label": + print "found label" + directory.delete() + found=True + else: + if not found: + raise IOError("No label in Philips TIFF file") def do_hamamatsu_ndpi(filename): with TiffFile(filename) as fh: @@ -514,6 +548,7 @@ def do_3dhistech_mrxs(filename): format_handlers = [ + do_philips_tif, do_aperio_svs, do_hamamatsu_ndpi, do_3dhistech_mrxs,