Como o endianness do JPEG importa na codificação?

Atualmente, estou trabalhando em um grande projeto que envolve fotos. Um dos grandes problemas que estou tendo é com a persistência da imagem (o jpeg é mais claro). Eu sempre pensei que, no mundo moderno, não precisávamos falar mal desse assunto, mas agora não tenho certez

O que eu faço

Eu faço uma solicitação HTTP para uma câmera IP, a câmera me devolve uma matriz de byte Analiso esses bytes em uma imagem de objeto no .NET usando Image.FromStrea Pego meu objeto Image e salve em um arquivo físico no disco rígid

Essas fotos são usadas em outro módulo do meu aplicativo que usa um "visualizador" de terceiros que manipula a imagem. O visualizador funciona com toda a imagem gerada usando o computador no Windows XP e Windows Vista. Mas quando a imagem é gerada usando uma máquina com Windows 7, as imagens ficam todas bagunçada

Digamos que a imagem criada com o Windows XP se chamará PictureXP e a imagem criada com o Windows 7 se chamará Picture7. Verifiquei os arquivos usando exiftools e descobri que havia dois campos diferentes entre o PictureXP e o Picture

PictureXP: Ordem Exif Byte: Little-endian Picture7: Ordem Exif Byte: Big-endian Picture7 também possui um campo adicional: Comentário do Usuário:.

As duas imagens podem ser abertas normalmente em qualquer visualizador de fotos. Somente nesse visualizador de terceiros é que a imagem aparece toda misturada, e a única diferença entre as três fotos são esses campos.

O que eu quero saber

É possível que terceiros precisem colocar código adicional em seu software para lidar com a continuidade da imagem? Eu acho que todos os programas de fotos por aí lidam com isso? É possível alterar a endianness do meu jpeg para ser sempre little-endian? Eu li em algum lugar que o conteúdo de um arquivo jpeg sempre deve estar no mesmo endianness, mas parece que ele não está considerando os dados exif. Se for possível, eu adoraria uma solução em .NET ... Qualquer coisa que possa ajudar a passar por essa situação também será considerada uma respost

Muito obrigado

EDIT 1 : Eu achei istoartig confirmando que as endiannes encontradas no cabeçalho exif são aplicáveis apenas ao cabeçalho exif e que um arquivo jpeg está sempre em big-endian. Então, existe uma maneira de alterar o cabeçalho exif para que o software de terceiros possa ler o que ele precisa?

questionAnswers(2)

yourAnswerToTheQuestion