Os arquivos com a extensão "hdr" devem terminar com caracteres de nova linha?

Os arquivos com a extensão "hdr" devem terminar com caracteres de nova linha?

Estou escrevendo um script que impõe a formatação de arquivos. Uma das coisas que ele faz é garantir que todos os arquivos de texto terminem com caracteres de nova linha.

Uma área da qual não tenho certeza é com .hdrarquivos. Estas são imagens, o filecomando do Linux diz que são Radiance HDR image data, mas podem ser abertas com um editor de texto e o script as interpreta como arquivos de texto. Dessa forma, o script anexa automaticamente novas linhas a esses arquivos.

Isto é uma coisa boa? Como esse tipo de arquivo é usado? Existe algum caso de uso para que esses arquivos de imagem sejam lidos como texto? Existe alguma desvantagem em fazer com que esses arquivos terminem com caracteres de nova linha? Devo adicionar uma exceção ao meu script para excluir hdrarquivos?

Responder1

o script anexa automaticamente novas linhas a esses .hdrarquivos [ ]. Isto é uma coisa boa?

Não. Mas provavelmente também não é ruim. Sobre o formato [ênfase minha]:

O arquivo começa com a assinatura #?RADIANCEe depois várias linhas listando os comandos usados ​​para gerar a imagem. […] Também existem key=valuedeclarações, inclusive a linha FORMAT=32-bit_rle_rgbe.

Depois disso, há uma linha em branco significando o final do cabeçalho. Uma única linha descreve a resolução e a ordem dos pixels. Conforme produzido pelas ferramentas Radiance, isso sempre assume a forma de -Y height +X width. Após esta linha segue odados de pixels binários.

(fonte)

Eu baixei um .hdrarquivo ( nancy_church_1.hdr) deesse site. Adicionei uma nova linha a uma cópia e até anexei outro arquivo. Testei com luminance-hdr, a ferramenta não reclamou.

Não estou surpreso. A resolução é conhecida; de acordo comesta descriçãoexistem quatro bytes por pixel e mesmo que haja codificação de comprimento de execução (rle) envolvida, ainda é fácil saber quando parar de interpretar os dados binários do pixel. E não há rodapé que possamos quebrar.

Ainda outras ferramentas podem ou não reclamar.

Mesmo que seja inofensivo, adicionar um caractere de nova linha a um .hdrarquivo não serve para nada. Pode-se querer adicionar novas linhas ausentes para satisfazer um dosRequisitos POSIX em relação a arquivos de texto, mas .hdros arquivos são, por design, não arquivos de texto em primeiro lugar. Não há nada para consertar.


Respostas às perguntas explícitas:

Os arquivos com a hdrextensão de arquivo devem terminar com caracteres de nova linha?

Pergunta um tanto complicada por causa da semântica. Não, eles não devem terminar com caracteres interpretados como novas linhas. Eles podem terminar com 0x0abytes. Como parte dos dados de pixels binários, 0x0anão devem ser interpretados como nova linha.

Como esse tipo de arquivo é usado?

Como gráficos.

Existe algum caso de uso para que esses arquivos de imagem sejam lidos como texto?

Você pode ler o cabeçalho e a linha que descreve a resolução e a ordem dos pixels. Você não deveria tentar ler otodoarquivo como texto.

Existe alguma desvantagem em fazer com que esses arquivos terminem com caracteres de nova linha?

Há uma chance de os arquivos ocuparem mais blocos no sistema de arquivos. Fora isso, é difícil dizer, algumas ferramentas podem reclamar. Não há benefícios, então você só pode piorar ou igualar as coisas.

Devo adicionar uma exceção ao meu script para excluir .hdrarquivos?

Eu acho que você deveria. Eu poderia. E prefiro confiar no filecomando, não na extensão.

informação relacionada