В настоящее время я работаю с Camera2 API и создал новый объект ImageReader.OnImageAvailableListener
.Конечно, он должен реализовывать метод onImageAvailable(ImageReader reader)
.Единственное, чего я хочу, - это получить последнее изображение из этого ридера и сохранить его, но, к сожалению, я просто не могу его получить.Я прочитал много исходных кодов, посетил разные Topcis StackOverflow, но не смог найти ответ.Я сейчас нахожусь в тот момент, когда мне нужно спросить: может ли этот Image
объект действительно сохраняться как файл изображения в памяти телефона?Вот метод:
@Override
public void onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
buffer.rewind();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
save(bytes);
image.close();
}
Метод save () открывает только FileOutputStream
и записывает в него байты, он работает.Проблема в том, что я получаю только черное изображение, и оно имеет очень маленький размер.
Формат изображения - JPEG, именно так я ранее настроил свой экземпляр ImageReader.
Iдаже пытался конвертировать его в разные форматы, например, от NV21
до JPEG
и прочее, но ничего не вышло.Что мне здесь не хватает?