Должны ли файлы с расширением «hdr» заканчиваться символами новой строки?

Должны ли файлы с расширением «hdr» заканчиваться символами новой строки?

Я пишу скрипт, который обеспечивает форматирование файлов. Одна из вещей, которую он делает, — это гарантирует, что все текстовые файлы заканчиваются символами новой строки.

Одна область, в которой я не уверен, это .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команду, а не на продление.

Связанный контент