Преобразовать координаты View Rect в область растрового изображения - PullRequest
0 голосов
/ 29 января 2020

У меня есть экран камеры с прямоугольником (простой вид) внутри, чтобы сделать фотографию, пользователь должен поместить объект внутри прямоугольника, после съемки приложение должно вырезать изображение и показать только область внутри прямоугольника.

  • Из camera2 api я получаю изображение и преобразовываю его в bitmap.
  • У меня есть координаты прямоугольника на экране.

Проблема в том, что bitmap width / height, например, 5472/7296 и координаты Rect, относящиеся к экрану устройства left-114 top-764 width-852 height-609, как я могу преобразовать его в область на растровом изображении, чтобы вырезать растровое изображение в области Rect's.

Я обрезаю растровое изображение, используя

Bitmap createBitmap(Bitmap source, int x, int y, int width, int height)

Я пытался рассчитать с процентами, но это не идеально (неточность около 5%).

1 Ответ

0 голосов
/ 10 февраля 2020

Таким образом, решение состояло в том, чтобы масштабировать растровое изображение до размеров экранов.

Bitmap bitmap = BitmapUtil.scaleBitmap(bitmap, screenWidth, screenHeight);

Затем обрезать по Rect кординатам

Bitmap cropBitmap = Bitmap.createBitmap(bitmap, rect.left, rect.top, rect.width(), rect.height());
...