В настоящее время я работаю над большим проектом, который включает в себя картинки. Одна из больших проблем, с которыми я сталкиваюсь, связана с порядком картинки (jpeg, чтобы быть более ясным). Я всегда думал, что в нашем современном мире нам не нужно беспокоиться об этом предмете, но сейчас я не уверен.
Что я делаю:
- Я делаю HTTP-запрос к IP-камере, камера возвращает мне массив байтов.
- Я разбираю эти байты в объект Image в .NET, используя Image.FromStream.
- Я беру объект Image и сохраняю в физический файл на жестком диске.
Эти изображения затем используются в другом модуле из моего приложения, в котором используется сторонний "просмотрщик", который выполняет некоторые манипуляции с изображением. Зритель работает со всей картиной, созданной на компьютере в Windows XP и Windows Vista. Но когда изображение генерируется с помощью компьютера с Windows 7, все изображения портятся.
Допустим, изображение, созданное в Windows XP, будет называться PictureXP, а изображение, созданное в Windows 7, будет называться Picture7.
Я проверил файлы с помощью exiftools и обнаружил, что между PictureXP и Picture7 было два поля, которые различались.
PictureXP: Exif Byte Order: Little-endian
Picture7: Exif Byte Order: Big-endian
Picture7 также имеет дополнительное поле: Комментарий пользователя:.
Эти два изображения могут быть открыты в обычном режиме в любом приложении для просмотра фотографий, только в этом средстве просмотра третьего лица изображение может быть перепутано, и единственное различие между этими 3 изображениями заключается в этих полях.
Что я хочу знать:
- Возможно ли, что третьему лицу нужно добавить дополнительный код в свое программное обеспечение, чтобы иметь дело с порядком байтов изображения? Я предполагаю, что все программы для работы с изображениями имеют дело с этим?
- Могу ли я изменить порядковый номер моего jpeg на постоянный? Я где-то читал, что содержимое файла jpeg всегда должно иметь одинаковый порядок байтов, но кажется, что оно не учитывает данные exif. Если это возможно, я бы хотел решение в .NET ...
- Все, что может помочь пройти через эту ситуацию, также будет рассматриваться как ответ.
Большое спасибо!
РЕДАКТИРОВАТЬ 1 : я нашел эту статью , подтверждающую, что endiannes, найденный в заголовке exif, применим только к заголовку exif и что файл jpeg всегда находится в big-endian. Так есть ли способ изменить заголовок exif, чтобы сторонний софт мог читать то, что ему нужно?