Existe uma maneira de inferir qual o formato de imagem de um arquivo é, sem ler todo o arquivo?

StackOverflow https://stackoverflow.com/questions/52739

  •  09-06-2019
  •  | 
  •  

Pergunta

Há uma boa maneira de ver como o formato de uma imagem é, sem ter que ler todo o arquivo para a memória?

Obviamente, isso deve variar de formato para o formato (estou particularmente interessado em arquivos TIFF) mas que tipo de procedimento seria útil para determinar que tipo de formato de imagem de um arquivo sem ter que ler todo o arquivo?

BÔNUS:E se a imagem é uma codificado em Base64 cadeia?De qualquer maneira confiável para inferir antes de decodificá-lo?

Foi útil?

Solução

A maioria dos formatos de arquivo de imagem exclusivos bytes no início.O unix file comando olha para o início do arquivo para ver que tipo de dados que ele contém.Consulte o artigo da Wikipedia sobre o Números mágicos em arquivos e magicdb.org.

Outras dicas

A certeza de que existe.Como os outros já mencionados, a maioria das imagens começar com algum tipo de "Magia", que irá traduzir sempre a algum tipo de dados Base64.A seguir estão alguns exemplos:

Um mapa de bits irá iniciar com o Qk3

Um Jpeg irá iniciar com o /9j/

Um GIF vai começar com R0l (Que é um zero como o segundo char).

E assim por diante.Não é difícil levar a diferentes tipos de imagem e descobrir o que eles codificam para.Só tome cuidado, pois alguns têm mais do que um pedaço de magia, então você precisa de conta para elas no seu B64 de tradução do código".

Ou file no *nix linha de comando ou leitura inicial de bytes do arquivo.A maioria dos arquivos vem com um cabeçalho exclusivo nos primeiros bytes.Por exemplo, TIFF do cabeçalho é algo como isto:

0x00000000: 4949 2a00 0800 0000
Para obter mais informações sobre o formato de arquivo TIFF, especificamente, se você gostaria de saber o que esses bytes ficar, ir aqui.

Um abrangente site de formatos de arquivo está disponível em:

http://www.wotsit.org

TIFFs vai começar com II ou MM (Intel ordem de byte ou Motorolla).
O TIFF 6 especificação pode ser baixado aqui e não é muito difícil de seguir

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top