【问题标题】:Is there a way to overwrite a tif file's "ImageDescription"?有没有办法覆盖 tif 文件的“ImageDescription”?
【发布时间】:2021-02-02 10:14:21
【问题描述】:

我正在对 .tif 射线照片进行一些修改,这是进一步分析所必需的。 然而,进一步的分析(在专有软件中......)预计会在这些射线照片的标题中准确找到该字段:

'ImageDescription': '斜率 = 2.13626E-05 \roffset = 0.00000E+00',

因为斜率和偏移量最终都是重要的参数。

我用 tifffile(从 skimage.io 调用)保存修改后的 .tifs:

tifffile.imsave(outname, modified_image))

现在,当阅读这些小说 .tif 并查看标题时,'ImageDescription' 字段有很多信息:

'ImageDescription': '{"shape": [789, 960]}', 'StripOffsets': (304,), 'SamplesPerPixel': 1, 'RowsPerStrip':789, 'StripByteCounts': (1514880,), 'XResolution': (1, 1), 'YResolution': (1, 1), 'ResolutionUnit': , '软件':'tifffile.py'}

但我想用我之前提到的短字符串替换所有这些。我发现的最有希望的功能是:

tifffile.imsave(outname, modified_image, description='slope = 2.13626E-05 \roffset = 0.00000E+00')) 

然而,这似乎不起作用。 它不会引发错误,但是读取文件“outname”并探测其标题,它仍然是我不想要的长字典,并且没有提及我想要的字符串。

通过尝试,我最终以“ImageDescription”的形式出现错误,无法用字符串填充,这让我感到震惊,因为“imsave”和“description”字段应该精确地用字符串填充“ImageDescription” ...

有人知道发生了什么并知道解决方法吗?

【问题讨论】:

  • 不,ImageDescription 字段/标签没有“大量信息”。 ImageDescription 在第一种情况下是 '{"shape": [789, 960]}'。在第二种情况下,有两个ImageDescription 字段,第一个是'slope = 2.13626E-05 \roffset = 0.00000E+00',显然它被您用来读取标题的任何软件忽略/丢弃。如果您不希望将形状信息存储在第二个 ImageDescription 标记中,请按照文档说明使用 metadata=None
  • @cgohlke 确实,我错过了第二个括号.. 我将标题读为:import tifffile with tifffile.TiffFile(refs.files[0]) as tif: tif_tags = {} for tag in tif.pages[0].tags.values(): name, value = tag.name, tag.value tif_tags[name] = value 并且看不到第二个“ImageDescription”,但因为你是对的,我'我也会对此进行假设(好吧,也许现在我想到它就被覆盖了)。顺便说一句,非常感谢您,使用metadata=None 是解决方法。你想把它写成答案,我会把它标记为已解决吗?

标签: python python-imaging-library metadata tiff scikit-image


【解决方案1】:

在图像中编辑元数据最有效的工具可能是exiftool,所以你可以这样做:

exiftool -Description='slope = 2.13626E-05 \roffset = 0.00000E+00' image.tif

【讨论】:

    猜你喜欢
    • 2014-02-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2017-05-16
    • 2013-09-11
    • 2012-09-03
    相关资源
    最近更新 更多