Я поддерживаю Android 4.4 (API 19) с использованием форм Xamarin.
У меня есть простое требование: пользователь должен сделать снимок с карты, а затем автоматически обрезать ее, чтобы взять именно карту, пользователь простонужно нажать на кнопку съемки.Пользовательский интерфейс действующего интерфейса:
В настоящее время я использую устаревший интерфейс Android.Hardware.Camera
, и я пытаюсь автоматически обрезать картуи игнорирую остальную часть фотографии, для этого я прохожу все виды арифметики безрезультатно!
Мои вопросы:
- Для такого простого требования я могу использовать Androidнамерение камеры отображать наложение как этот и кадрирование?Я иду так далеко, используя аппаратный интерфейс камеры напрямую?
- Карта центрирована по горизонтали и вертикали в полупрозрачной области.У меня есть следующие переменные, которые я пытаюсь собрать вместе, чтобы обрезать карту в нужном месте: 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 в расчеты?