Xamarin Forms Фотосъемка на Android и обрезка - PullRequest
0 голосов
/ 23 мая 2018

Я поддерживаю Android 4.4 (API 19) с использованием форм Xamarin.

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

enter image description here

В настоящее время я использую устаревший интерфейс Android.Hardware.Camera, и я пытаюсь автоматически обрезать картуи игнорирую остальную часть фотографии, для этого я прохожу все виды арифметики безрезультатно!

Мои вопросы:

  1. Для такого простого требования я могу использовать Androidнамерение камеры отображать наложение как этот и кадрирование?Я иду так далеко, используя аппаратный интерфейс камеры напрямую?
  2. Карта центрирована по горизонтали и вертикали в полупрозрачной области.У меня есть следующие переменные, которые я пытаюсь собрать вместе, чтобы обрезать карту в нужном месте: ScalingFactor (обычно 1, 2, 3 или 4), SemiTransWidthDp (обычно 360Dp), SemiTransHeightDp (обычно от 400Dp до 700Dp), CardWidthDp (обычно)80% от SemiTransWidthDp), CardHeightDp (это CardWidthDp / 1.6)

CardXInDp = (SemiTransWidthDp - CardWidthDp) / 2

CardYInDp = (SemiTransHeightDp - CardHeight 10p - CardHeight*

CameraPreviewWidthPixel, CameraPreviewHeightPixel, PictureWidthPixel, PictureHeightPixel.

Я использую SkiaSharp для обрезки, поэтому мне нужно вычислить следующее:

cropCardLeftPixel =?

cropCardTopPixel =?

cropCardWidthPixel =?

cropCardHeightPixel =?

Я иду далеко?Может ли кто-нибудь помочь мне установить связь между параметрами, указанными выше, чтобы можно было обрезать карту?Нужно ли учитывать включение CameraPreviewHeight и width в расчеты?

...