ImageMagick:如何在处理TIFF时消除TIFF警告/768关于“未知字段”的消息?

2024-09-29 01:28:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我将ETOPO1.tif加工到修剪区域山体阴影中

我得到的a tiff image看起来像:enter image description here

当我通过ImageMagick处理它时,它会成功运行。但我收到以下一组警告信息:

convert Yug-shadedrelief.tmp.tif -fuzz 7% -fill "#FFFFFF" -opaque "#DDDDDD"  whited.jpg     # lighter (0.9M)

 convert.im6: Unknown field with tag 33550 (0x830e) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 33922 (0x8482) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 34735 (0x87af) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 34736 (0x87b0) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 34737 (0x87b1) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 42113 (0xa481) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.

我的.tif是否已损坏?

我该怎么做才能把这些信息带出去?


Tags: 信息区域fieldconverttagwithunknownwarning
3条回答

与你原来的标题(我更改了标题)不同,这不是一条“错误”信息,而只是一个警告:

TIFFReadDirectory: Warning, Unknown field with tag 33550 (0x830e) encountered. [...]
TIFFReadDirectory: Warning, Unknown field with tag 33922 (0x8482) encountered. [...]
TIFFReadDirectory: Warning, Unknown field with tag 34735 (0x87af) encountered. [...]
[...]

这里列出的标签是GeoTIFF的private tags。请看这里:

要查看它们的内容(对您来说可能不是很有意义),可以使用tiffdump(或tiffutil -dump)实用程序。有可能exiftool可以向您展示这些标记的含义:

 exiftool -a -U -u -g1 Yug-Shadedrelief.tmp.tif

-u-U也应该提取所有未知(toexiftool)标签。如果您的输出中没有“垃圾”,那么exiftool可以从它看到的东西中得出正面和反面,您也应该这样:-)

也许您可以选择释放删除这些标签exiftool也可以为您这样做

如果您只想让恼人的消息离开您的视线,而不想更改TIFF,那么为您的命令2> /dev/null重定向stderr就足够了:

convert                    \
  Yug-shadedrelief.tmp.tif \
 -fuzz 7%                  \
 -fill "#FFFFFF"           \
 -opaque "#DDDDDD"         \
  whited.jpg               \
  2>/dev/null

更新

 Code |  Code |                     |
(dec) | (hex) | Tag Name            | Short Description
   +   -+          -+                            
33550 | 830E  | ModelPixelScaleTag  | Used in interchangeable GeoTIFF files
33922 | 8482  | ModelTiepointTag    | Originally part of Intergraph's GeoTIFF, 
34735 | 87af  | GeoKeyDirectoryTag  | Used in interchangeable GeoTIFF files
34736 | 87b0  | GeoDoubleParamsTag  | Used in interchangeable GeoTIFF files
34737 | 87b1  | GeoAsciiParamsTag   | Used in interchangeable GeoTIFF files
42113 | a481  | GDAL_NODATA         | Used by GDAL lib, contains ASCII encoded nodata or ...

解释:

  • 33550“…可选用于定义光栅和模型空间之间的精确仿射变换…”
  • 33922“…也称为“地理参考标记”。此标记存储光栅->;模型连接点对…”
  • 34735“…也称为‘ProjectionInfo标签’和‘CoordSystemInfoTag’”
  • 34736“…用于存储GeoKeyDirectoryTag引用的所有双值GeoKey…”
  • 34737“…用于存储GeoKeyDirectoryTag引用的所有ASCII值的地理键”
  • 42113“…一种特殊的像素值,用于标记没有可用信息的地理空间区域……”

您可以通过以下方式重新编译libtiff:

  • 在tiff.h中添加此类行

    #define TIFFTAG_ModelPixelScale 33550

  • 在tif_dirinfo.c中添加TiffieldInfo

    static const TIFFFieldInfo; tiffFieldInfo[] = {..., { TIFFTAG_ModelPixelScale,1, 1, TIFF_LONG, FIELD_SUBFILETYPE, 1, 0, "ModelPixelScale" }, ... };

我的.tif是否已损坏?

不,这些只是关于Imagemagick不知道的附加元数据(private TIFF tags)的警告

我该怎么做才能把这些信息带出去?

添加命令行选项-quiet以抑制所有警告消息(如Mark Setchell在注释中所建议的)

相关问题 更多 >