2017-01-21 2 views
5

В андроиде я получаю объект изображения отсюда https://inducesmile.com/android/android-camera2-api-example-tutorial/ этот учебник по фотоаппарату. Но я хочу теперь перебирать значения пикселей, знает ли кто-нибудь, как я могу это сделать? Нужно ли мне преобразовывать его в нечто другое и как я могу это сделать?Как преобразовать android.media.Image в растровый объект?

Благодаря

ответ

5

Если вы хотите, чтобы цикл в течение всего пикселя, то вам нужно, чтобы преобразовать его в первом Bitmap объект. Теперь, когда я вижу в исходном коде, что он возвращает Image, вы можете напрямую преобразовать байты в растровое изображение.

Image image = reader.acquireLatestImage(); 
    ByteBuffer buffer = image.getPlanes()[0].getBuffer(); 
    byte[] bytes = new byte[buffer.capacity()]; 
    buffer.get(bytes); 
    Bitmap bitmapImage = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, null); 

Затем, как только вы получите объект растрового изображения, вы можете теперь перебирать все пиксели.

+0

Какова цель строки 'buffer.get (bytes)', если буфер не используется позднее? – mercury0114

+2

Загружает изображение в память из буфера в массив байтов. Таким образом, 'get' заключается в извлечении байтов из буфера изображения. –

+0

Есть ли другой способ сделать это (получить доступ к пикселям из изображения)? Для загрузки Bitmap требуется много памяти. – Mugur

Смежные вопросы