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 .hdr
arquivos. Estas são imagens, o file
comando 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 hdr
arquivos?
Responder1
o script anexa automaticamente novas linhas a esses
.hdr
arquivos [ ]. 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
#?RADIANCE
e depois várias linhas listando os comandos usados para gerar a imagem. […] Também existemkey=value
declarações, inclusive a linhaFORMAT=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 .hdr
arquivo ( 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 .hdr
arquivo 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 .hdr
os 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
hdr
extensã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 0x0a
bytes. Como parte dos dados de pixels binários, 0x0a
nã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
.hdr
arquivos?
Eu acho que você deveria. Eu poderia. E prefiro confiar no file
comando, não na extensão.