Согласно документации, setRotation(90)должен вращать захваченное изображение JPEG ( takePictureв ландшафтном режиме.
Это прекрасно работает на телефоне HTC, но не работать на Samsung Google Nexus S и Samsung Galaxy S3. Является ли это ошибкой?
Я знаю, что могу использовать вращение матричного преобразования, но хочу, чтобы ОС могла делать это более эффективно, и не хочу рисковать чрезмерным вращением на некоторых других устройствах
изменить
Параметр camera.setDisplayOrientation(90);
сделал предварительный просмотр в портретном режиме, однако это не повлияло на сделанное изображение.
Кроме того, помимо setRotation
я также попытался установить размер изображения, где я переворачиваю h
с w
: parameters.setPictureSize(1200, 1600 );
.Это тоже ни на что не повлияло.
решение
Видимо телефоны Samsung устанавливают тег ориентации EXIF, а не поворачивают отдельные пиксели.Как предложил ariefbayu
, чтение Bitmap с использованием BitmapFactory
не поддерживает этот тег. Его пример кода является решением, и это решение также совместимо с использованием inSampleSize
.