Я пишу скрипт, который обеспечивает форматирование файлов. Одна из вещей, которую он делает, — это гарантирует, что все текстовые файлы заканчиваются символами новой строки.
Одна область, в которой я не уверен, это .hdr
файлы. Это изображения, file
команда Linux говорит, что они 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
расширением file заканчиваться символами новой строки?
Несколько сложный вопрос из-за семантики. Нет, они не должны заканчиваться символами, интерпретируемыми как переводы строк. 0x0a
Хотя они могут заканчиваться байтами. Как часть двоичных пиксельных данных, 0x0a
они не должны интерпретироваться как переводы строк.
Как используется этот тип файла?
Как графика.
Есть ли возможность читать эти файлы изображений как текст?
Вы можете прочитать заголовок и строку, описывающую разрешение и порядок пикселей. Вы не должны пытаться прочитатьвесьфайл как текст.
Есть ли какие-либо недостатки в том, чтобы заканчивать эти файлы символами новой строки?
Есть вероятность, что файлы займут больше блоков в файловой системе. Кроме этого, трудно сказать, некоторые инструменты могут жаловаться. Нет никаких преимуществ, так что вы можете только ухудшить ситуацию или сделать ее равной.
Стоит ли добавлять исключение в скрипт, чтобы исключить
.hdr
файлы?
Я думаю, что вам следует это сделать. Я бы так и сделал. И я бы предпочел положиться на file
команду, а не на продление.