2016-08-20 1 views
0

Я создаю приложение для камеры, подобное сканеру штрих-кода, показанному на картинке. Мне нужно использовать как API , так и android.hardware.camera2 API для поддержки API андроида> = 19.Изображение обложки для камеры Android

Основная идея состоит в том, чтобы иметь предварительный просмотр камеры на весь экран, но сохранять только часть, которая не затемнена (или сфотографировать область, которая не потемнеет). Я уже сделал некоторые исследования и понял, что невозможно сделать только часть изображения через Camera и android.hardware.camera2 API (но я не уверен на 100%). Поэтому я думаю, что мне нужно сделать некоторые манипуляции над массивом байтов (сжатым в JPEG), который я получаю в результате захвата камеры.

Я пытался использовать BitmapRegionDecoder таким образом:

BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(bytes, 0, bytes.length, false); 
Bitmap bitmap = decoder.decodeRegion(new Rect(500, 500, 1500, 1500), null); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output); 

Где bytes является JPEG сжимаются результат захвата камеры. Но этот подход меняет ориентацию изображения и не обрезает область, определенную с помощью Rect (на самом деле обрезает другую часть изображения)

Я был бы признателен за любые предложения и подсказки о том, как добиться желаемого поведения.

enter image description here

+0

Вы получили это за работу? – Carpetfizz

ответ

0

Это было некоторое время, но люди по-прежнему заинтересованы в этом вопросе. Вот почему я делюсь тем, как я решил эту проблему.

  • Я сохраняю полное изображение, взятое с камеры как .jpg.
  • Тогда я получаю угол поворота от .jpg файла. Проблема обрезки различного региона заключалась в том, что у каждого изображения есть угол поворота, который я смог получить от ExifInterface
  • Область масштабирования (светлый прямоугольник на камере) для сохраненных размеров изображения.
  • Поверните область обрезки для угла, который был получен ранее.

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

  • Нет связанных вопросов^_^