Я работаю с фронтальной камерой в приложении Flutter, и я заметил, что на некоторых устройствах Android предварительный просмотр выглядит зеркальным, в то время как на других он выглядит правильно. Мне нужен надежный способ определить, является ли фронтальная камера зеркально. В cameracontroller.description:
i предположил, что устройства с сенсорориентацией 90 или 270 отражат фронтальную камеру, но этот метод ненадежен.
< /ol>
bool isFrontCameraMirrored() {
if (_cameraController?.description.lensDirection == CameraLensDirection.front) {
int sensorOrientation = _cameraController?.description.sensorOrientation ?? 0;
// Devices with sensor orientation 90 or 270 are likely to mirror the front camera.
return sensorOrientation == 90 || sensorOrientation == 270;
}
return false;
}
Проблема: это не работает, потому что у меня есть два разных устройства с сенсорориентацией 270 - один зернут, а другой нет.
Сделать снимки и проверку различий в пикселях:
Я попытался снять изображение и сравнить пиксели с левой и правой стороны, чтобы обнаружить зеркальное зеркальное оборудование. < /li>
< /ol>
bool checkHorizontalMirroring(img.Image image) {
int width = image.width;
int height = image.height;
var leftPixel = image.getPixel(10, height ~/ 2);
var rightPixel = image.getPixel(width - 10, height ~/ 2);
return leftPixel != rightPixel;
}
< /code>
Проблема: Этот метод всегда возвращает true, даже если изображение не зеркально. < /p>
Как я хочу использовать этот результат обнаружения:
Как только я обнаружил, является ли камера зеркально, я хочу использовать _ismirroredhorizontally в моем пользовательском интерфейсе, как это:
_isMirroredHorizontally
? Positioned.fill(
child: Transform.flip(
flipX: true,
child: CameraPreview(_cameraController!),
),
)
: Transform.scale(
scale: 1 / tempScale,
child: Center(
child: CameraPreview(_cameraController!),
),
),
Подробнее здесь: https://stackoverflow.com/questions/794 ... rroring-on