Я создаю приложение, которое использует камеру для съемки. Вот мой исходный код для этого:
File file = new File(Environment.getExternalStorageDirectory(),
imageFileName);
imageFilePath = file.getPath();
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
//Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, ACTIVITY_NATIVE_CAMERA_AQUIRE);
По onActivityResult()
методу я использую, BitmapFactory.decodeStream()
чтобы забрать изображение.
Когда я запускаю свое приложение на Nexus one, оно работает нормально. Но когда я запускаю Samsung Galaxy S или HTC Inspire 4G, направление изображения неверное.
- При съемке в портретном режиме реальное изображение (сохраненное на SD-карте) всегда поворачивается на 90 градусов.
Предварительный просмотр изображения после съемки --------- Реальное изображение на SD-карте
- Захват в ландшафтном режиме, все хорошо.
Предварительный просмотр изображения после съемки --------- Реальное изображение на SD-карте
android
orientation
android-camera-intent
Нгуен Минь Бинь
источник
источник
Ответы:
Здесь довольно много похожих тем и проблем. Поскольку вы не пишете свою собственную камеру, я думаю, что все сводится к следующему:
некоторые устройства поворачивают изображение перед его сохранением, а другие просто добавляют тег ориентации в данные exif фотографии.
Я бы рекомендовал проверить exif-данные фотографии и особенно поискать
Поскольку фотография отображается правильно в вашем приложении, я не уверен, в чем проблема, но это определенно должно указать вам правильный путь!
источник
Я только что столкнулся с той же проблемой и использовал это, чтобы исправить ориентацию:
Если ширина растрового изображения больше высоты, возвращаемое изображение находится в альбомной ориентации, поэтому я поворачиваю его на 90 градусов.
Надеюсь, это поможет кому-нибудь еще с этой проблемой.
источник
Тут нужны две вещи:
Предварительный просмотр камеры нужен так же, как и ваш поворот. Установите это
camera.setDisplayOrientation(result);
Сохраните сделанное изображение в качестве превью камеры. Сделайте это через
Camera.Parameters
.Надеюсь, это поможет.
источник
parameters.setRotation(result)
: нет?источник
Другой вариант - повернуть растровое изображение на экране результатов следующим образом:
источник
У меня также такая же проблема для некоторых устройств:
источник
Попробуйте так: static Uri image_uri; статический растровое изображение take_image = null;
}
источник
Больше не нужно проверять exif-данные фотографии. Работайте легко с Glide .
Google представил нам библиотеку загрузчика изображений для Android, разработанную bumptech, под названием Glide в качестве библиотеки, рекомендованной Google. До сих пор он использовался во многих проектах Google с открытым исходным кодом, включая официальное приложение Google I / O 2014.
Пример: Glide.with (контекст) .load (uri) .into (просмотр изображений);
Подробнее: https://github.com/bumptech/glide
источник
Надеюсь, это поможет !! Спасибо
источник
Надеюсь, это поможет. Спасибо!
источник
Просто столкнитесь с той же проблемой, приведенный ниже фрагмент кода работает для меня:
надеюсь, это поможет :)
источник
Попробуйте это в обратном вызове surfaceChanged:
источник
// нажатие кнопки
// метод onActivityResult
// создаем путь к файлу класса
public class FilePath {
}
источник
Код функционально предназначен для альбомной и портретной ориентации @frontCameraID = переменная получила классический метод для демонстрационной камеры.
Метод получения ориентации по оси y для сохранения изображения и ориентации дисплея @result = ориентация при предварительном просмотре камеры @rotationPicture = вращение, необходимое для правильного сохранения изображения
У кого-то вопрос по коду, скажите, пожалуйста.
источник
два решения One Line с использованием Picasso и библиотеки скольжения
Потратив много времени на множество решений проблемы поворота изображения, я наконец нашел два простых решения. Никаких дополнительных работ делать не нужно. Picasso и Glide - очень мощные библиотеки для обработки изображений в вашем приложении. Он считывает данные EXIF изображения и автоматически поворачивает изображения.
Использование библиотеки скольжения https://github.com/bumptech/glide
Использование библиотеки Picasso https://github.com/square/picasso
источник