Я работаю над способом фотографирования с помощью Camera2 API. Я начал с клонирования репозитория образцов приложений Google.
Пример приложения работает; оно сохраняет изображение и корректно ориентируется при просмотре через файловый браузер на устройстве и при просмотре его на компьютере с Windows.
Однако, когда я пытаюсь заменить код, который сохраняет изображение в файловую систему, кодом, который преобразует изображение в Base64, эта строка (при декодировании) выглядит повернутой на 90 градусов против часовой стрелки. Я видел подобные вопросы, которые утверждают, что само изображение поворачивается, но в данном случае это только представление base64. Вот изменение кода, которое я внес в пример приложения:
@Override
public void onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
byte[] encodedBytes = Base64.encode(bytes,Base64.NO_WRAP);
String encodedString = new String(encodedBytes);
Log.wtf(TAG, "Base64 JPG: " + encodedString);
}
Я поместил точку останова в строку журнала, чтобы можно было извлечь все значение закодированной строки. Я использовал несколько онлайн-инструментов, таких как этот , и он почему-то поворачивается на 90 градусов влево.
Это неверный путь к Base64 в формате JPG? Я неправильно анализирую байты?