Pergunta

Existem marcadores de fim de exif/fim de xmp/fim de iptc/início de dados que eu poderia usar para obter uma soma de verificação apenas da parte de dados de um jpg/jpeg (e outros formatos de imagem) ?

Foi útil?

Solução 6

Mediatags tem suporte de soma de verificação para jpeg, mp3, m4a, etc

Outras dicas

Eu acho que esta pergunta está relacionada a este Calcule o hash apenas dos dados da imagem principal (excluindo metadados) para uma imagem, https://stackoverflow.com/a/10075170/890106 fornece um elemento de resposta se você estiver procurando por código.

Pode não funcionar com todas as variantes JPG: algumas delas podem incorporar várias imagens (formato MPF / CIPA Multi-Picture, mais informações em http://www.sno.phy.queensu.ca/~phil/exiftool/tagnames/mpf.html) e você ainda pode ter alguns metadados. Além disso, algum software colocou um UID na forma de-[0-9a-f]+-no final do arquivo e não deve ser lido. Solução mais segura, se provavelmente para pixels de soma de verificação (embora você ainda possa ter influência da orientação, perfil de cores, ..).

Uma maneira fácil de obter uma soma de hash apenas dos dados do pixel seria converter o JPEG em um BMP de 32 bits ou alternativamente em PNG e calcular um hashsum a partir disso. Isso retirará todas as informações associadas dos JPEGs e até corresponderá a JPEGs com as codificações diferentes que levam aos mesmos dados de pixels. É claro que você também pode usar os dados do Pixel na memória dos BMPs resultantes diretamente, se você o tiver (ou seja, o Windows possui várias funções da API para obtê -lo de qualquer tipo de imagem suportado).

Sim para jpeg e exif, não sei para os outros.

A especificação JPEG que tenho é chamada JFIF (JPEG File Interchange Format), vem do Anexo B da ISO 10918-1 e, como todas as especificações ISO, é necessária uma leitura cuidadosa para descobrir como traduzir as especificações em estruturas de dados.Eu penso esse é muito mais fácil de seguir

o formato EXIF ​​é analisado de forma muito semelhante ao formato TIFF.cada pedaço tem um tipo e um tamanho, então você apenas percorre os pedaços até chegar ao pedaço de dados da imagem.ele tem um ponteiro para os dados da imagem (na verdade, ponteiros para faixas, mas tenho certeza de que você pode assumir que tudo após a primeira faixa de dados de imagem até o final do arquivo são dados de imagem.

O formato exif tem seu próprio site

Você terá que olhar para cada formato. Para JPEG, parece a estrutura implica que você pode simplesmente fazer uma soma de verificação das seções que começam com FFEN (por exemplo, 0xffe1) e soma de verificação dos bytes especificados após cada marcador (parece que o comprimento segue o marcador e é 2 bytes em formato grande endiano). Para mais detalhes, veja aqui.

Como você deseja fazer isso para vários formatos de imagem, basta usar uma biblioteca de descompressão de imagens de uso geral e executar sua soma de verificação nos dados não compactados. Isso permitirá que você corresponda às imagens idênticas, mesmo que elas sejam codificadas de maneira diferente no disco.

Se você deseja se limitar ao JPEG, verifique os dados entre SOI e EOI. Esta resposta pode ser ligeiramente adaptado para fazer o que você precisa.

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