Обрезка камеры при съемке - PullRequest
0 голосов
/ 24 апреля 2019

При съемке на моем устройстве Android (OnePlus 6) немного обрезается после takePicture().

Без обработки, при использовании изображения из возвращенного filePath изображение приблизительно увеличивается / обрезаетсяна 5-10% со всех сторон.

Точно такой же код на устройствах iOS, такой проблемы нет.

Инициализация

getCameras().then((_) {
      cameraController = CameraController(cameras[0], ResolutionPreset.high);
      cameraController.initialize().then((_) {
        if (!mounted) return;
        setState(() {});
      });
    });

UI

Container(
          width: previewWidth,
          height: previewWidth,
          child: cameraController != null
              ? cameraController.value.isInitialized
                  ? ClipRect(
                      child: OverflowBox(
                        alignment: Alignment.center,
                        child: FittedBox(
                          fit: BoxFit.fitWidth,
                          child: Container(
                            width: previewWidth,
                            height: previewWidth / cameraController.value.aspectRatio,
                            child: cameraController.value.isInitialized && cameraController != null
                                ? RotatedBox(child: CameraPreview(cameraController), quarterTurns: 0,)
                                : Container(), // this is my CameraPreview
                          ),
                        ),
                      ),
                    )
                  : Container()
              : Container(),
        ),

onPressed Кнопка спуска затвора

onPressed: () async {
                  String filePath = await takePicture();

                  setState(() {
                    node.image = Image.file(File(filePath));
                    node.imageFile = File(filePath);
                  });
                },

Future<String> takePicture() async {
    if (!cameraController.value.isInitialized) {
      return null;
    }
    final Directory extDir = await getTemporaryDirectory();
    final String dirPath = '${extDir.path}/images/ptb';
    await Directory(dirPath).create(recursive: true);

    String fileName =
        'temp_' + (DateTime.now().millisecondsSinceEpoch * 1000).toString();
    final String filePath = '$dirPath/$fileName.jpg';

    if (cameraController.value.isTakingPicture) {
      return null;
    }

    try {
      await cameraController.takePicture(filePath);
    } on CameraException catch (e) {
      Alert().showSimpleAlert(
          context: context,
          title: "Oops! Error",
          message: 'Error: ${e.code}\n${e.description}');
      return null;
    }
    return filePath;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...