我正在編寫一個強製文件格式的腳本。它所做的事情之一是確保所有文字檔案都以換行符號結尾。
我不確定的一個領域是.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
命令,而不是擴展。