带有“hdr”文件扩展名的文件是否应以换行符结尾?

带有“hdr”文件扩展名的文件是否应以换行符结尾?

我正在编写一个强制文件格式化的脚本。它所做的一件事是确保所有文本文件都以换行符结尾。

我不确定的一个领域是.hdr文件。这些是图像,Linuxfile命令说它们是Radiance HDR image data,但它们可以用文本编辑器打开,并且脚本将它们解释为文本文件。因此,脚本会自动将换行符附加到这些文件。

这是好事吗?这种文件类型如何使用?这些图像文件是否有任何用例可以作为文本读取?让这些文件以换行符结尾有什么缺点吗?我是否应该在脚本中添加例外以排除hdr文件?

答案1

脚本会自动将换行符添加到这些 [ .hdr] 文件中。这是好事吗?

不。但可能也不错。关于格式 [重点是我的]:

该文件以签名开头#?RADIANCE,然后是几行列出用于生成图像的命令。[…] 其中还有一些key=value声明,包括以下行FORMAT=32-bit_rle_rgbe

之后是空白行,表示标题结束。一行描述分辨率和像素顺序。Radiance 工具生成的格式始终为-Y height +X width。此行之后是二进制像素数据

来源

我从以下位置下载了一个.hdr文件(nancy_church_1.hdr本网站。我在副本中添加了换行符,甚至附加了另一个文件。我用 进行了测试luminance-hdr,该工具没有报错。

我并不感到惊讶。解决方案是已知的;根据这个描述每个像素有四个字节,即使涉及游程编码 (rle),仍然很容易知道何时停止解释二进制像素数据。而且没有我们可以破坏的页脚。

其他工具也可能会抱怨,也可能不会。

即使无害,在.hdr文件中添加换行符也没有任何意义。人们可能希望添加缺失的换行符,以满足以下要求之一:有关文本文件的 POSIX 要求,但.hdr文件从设计上来说就不是文本文件。没什么可修复的。


对明确问题的答案:

文件扩展名的文件是否应hdr以换行符结尾?

由于语义原因,这个问题有些棘手。不,它们不应以解释为换行符的字符结尾。0x0a但它们可以以字节结尾。作为二进制像素数据的一部分,0x0a不应将其解释为换行符。

该文件类型如何使用?

作为图形。

这些图像文件是否有被读取为文本的用例?

您可以阅读标题和描述分辨率和像素顺序的行。您不应该尝试阅读所有的文件为文本。

让这些文件以换行符结尾有什么缺点吗?

文件可能会占用文件系统中的更多块。除此之外很难说,有些工具可能会抱怨。没有任何好处,所以你只能让事情变得更糟或平等。

我是否应该在脚本中添加例外来排除.hdr文件?

我认为你应该这么做。我会的。而且我宁愿依赖命令file,而不是扩展。

相关内容