Tifffile 是在 Python 中保存带有大量元数据的显微图像的一种选择。
它没有很多外部文档,但是 docstings 很好,所以您可以通过在 Python 中键入 help(tifffile) 或查看源代码来获取很多信息。
您可以在源代码(第750行)中查看 TiffWriter.save 函数,以获取可用于编写元数据的不同关键字参数。
其中一个选项是使用 description,它接受一个字符串。当您读取图像时,它将显示为标签 "ImageDescription"。
另一个选项是使用 extratags 参数,它接受一个元组列表。这允许您编写任何存在于TIFF.TAGS()中的标记名称。最简单的方法之一是将它们编写为字符串,因为那样就不必指定长度。
您还可以使用 ijmetadata 编写 ImageJ 元数据,其可接受的类型在此处列出。
例如,如果您编写以下内容:
import json
import numpy as np
import tifffile
im = np.random.randint(0, 255, size=(150, 100), dtype=np.uint8)
description = "This is my description"
metadata_tag = json.dumps({"ChannelIndex": 1, "Slice": 5})
extra_tags = [("MicroManagerMetadata", 's', 0, metadata_tag, True),
("ProcessingSoftware", 's', 0, "my_spaghetti_code", True)]
ijinfo = {"InitialPositionList": [{"Label": "Pos1"}, {"Label": "Pos3"}]}
ijmetadata = {"Info": json.dumps(ijinfo)}
tifffile.imsave(
save_name,
im,
ijmetadata=ijmetadata,
description=description,
extratags=extra_tags,
)
阅读图片时,您可以看到以下标签:
frames = tifffile.TiffFile(save_name)
page = frames.pages[0]
print(page.tags["ImageDescription"].value)
输出:'这是我的描述'
print(page.tags["MicroManagerMetadata"].value)
输出结果: {'ChannelIndex': 1, 'Slice': 5}
print(page.tags["ProcessingSoftware"].value)
输出:我的面条式代码