как определить, была ли фотография сделана в альбомной или портретной ориентации? Ориентация метаданных JPEG .NET - PullRequest
4 голосов
/ 08 апреля 2010

Через VB.net/C# есть ли способ прочитать какие-либо метаданные из JPEG, чтобы узнать, была ли фотография сделана в альбомной или портретной ориентации?

Я бы предположил, что камере в первую очередь понадобится акселерометр, чтобы даже определить направление вверх ... правильно? Предполагая, что есть такой тип интеллекта для определения угла наклона, как бы я прочитал эту информацию из JPEG?

Я нашел несколько примеров в Интернете для чтения метаданных с помощью vb / .net, не уверен, что читать, чтобы найти нужную мне информацию.

Цените любые указатели .....

Ответы [ 3 ]

6 голосов
/ 08 апреля 2010

Да, есть EXIF-тег, который может хранить ориентацию. Тэг № 274, значения задокументированы здесь . Пример кода для чтения тегов из данных JPEG: доступен здесь .

2 голосов
/ 08 апреля 2010

Многие цифровые камеры теперь имеют датчики внутри, чтобы определять, был ли снимок сделан в альбомной или портретной ориентации. Затем они сохраняют эту информацию в заголовке JPG. Эти данные известны как EXIF.

Вот довольно хороший учебник по извлечению данных EXIF ​​из файла JPG. В дополнение к портретной / альбомной информации вы также можете извлечь (обычно) модель / марку камеры, настройки объектива, время / дату и т. Д.

http://www.codeproject.com/KB/graphics/NishExifReader.aspx

1 голос
/ 08 апреля 2010

Было бы достаточно просто сравнить ширину изображения JPG с его высотой и, если ширина> высота, рассматривать как ландшафт?

Я делал это раньше в C # (хотя сейчас я не могу вспомнить подробности реализации, но я помню, что это было не особенно сложно, всего несколько строк кода) для веб-сайта, над которым я работал, для которого требовалось загружать JPG в отображаться в рамке (например, вы можете повесить на стену), и нам нужно было знать, добавить ли рамочную или альбомную версию рамки.

...