Я думаю, что это может быть ошибка в коде вашего сервера с тегами EXIF. На моем Droid с 2.1 я сделал снимок в портретном режиме, как вы упомянули, и исследовал сохраненный результат (например, по электронной почте). При открытии файла в режиме предварительного просмотра (на Mac) он выглядит правильно.
С помощью удобного инструмента exif
(port install exif
на Mac) я смог напечатать информацию EXIF:
$ exif -t Orientation image.jpg
EXIF entry 'Orientation' (0x112, 'Orientation') exists in IFD '0':
Tag: 0x112 ('Orientation')
Format: 3 ('Short')
Components: 1
Size: 2
Value: right - top
Теперь, если вам нужно стереть информацию EXIF, что может происходить при обмене данными между сервером и клиентом:
$ exif --ifd=0 --tag=Orientation --set-value= -o image2.jpg image.jpg
Wrote file 'image2.jpg'.
$ exif -t Orientation image2.jpg
EXIF entry 'Orientation' (0x112, 'Orientation') exists in IFD '0':
Tag: 0x112 ('Orientation')
Format: 3 ('Short')
Components: 1
Size: 2
Value:
Полученное изображение будет в альбомной ориентации.
Итак, суть в том, что Я думаю, что Droid хранит биты в изображении всегда в альбомной ориентации и полагается на метаданные EXIF для хранения информации о ротации (что совершенно верно), и ваше приложение может отбрасывать эту информацию .
Надеюсь, это поможет! Не стесняйтесь комментировать или редактировать оригинальный вопрос для дальнейшего устранения неполадок.