首页 文章

颤动相机显得拉长

提问于
浏览
0

到目前为止,我一直在四处奔波,我很喜欢它,但我在让相机工作时遇到了问题 .

我按照本页https://pub.dartlang.org/packages/camera上的说明进行操作 . 但是,相机被拉伸以适应手机屏幕,但图像翘曲并且比应有的高 . 其他使用相机的应用程序似乎保持比例,有没有办法确保它不会拉伸但仍然填满屏幕?

3 回答

  • 6

    lase的解决方案的基础上,即使设备的纵横比与摄像机比率不同,这仍然有效:

    final size = MediaQuery.of(context).size;
    final deviceRatio = size.width / size.height;
    return Transform.scale(
      scale: controller.value.aspectRatio / deviceRatio,
      child: Center(
        child: AspectRatio(
          aspectRatio: controller.value.aspectRatio,
          child: CameraPreview(controller),
        ),
      ),
    );
    
  • 4

    我遇到了类似的问题,虽然理查德的答案很有帮助,但我也遇到了预览太小的问题 . 可能有更好的方法,但我能够通过像这样的宽高比反转来缩放它来解决它:

    return new Scaffold(
      appBar: new AppBar(title: new Text('Capture')),
      body: new Transform.scale(
          scale: 1 / controller.value.aspectRatio,
          child: new Center(
            child: new AspectRatio(
                aspectRatio: controller.value.aspectRatio,
                child: new CameraPreview(controller)),
          )),
    );
    

    从内到外,这应该:

    • 以正确的宽高比构建 CameraPreview

    • 在视图中居中此预览

    • 应用缩放变换,允许预览根据宽高比适当填充屏幕

  • 0

    您需要将预览包装在提供正确宽高比的窗口小部件中 - 通过自己将宽度和高度设置为正确的比例,或使用AspectRatio . 例如,相机插件示例使用:

    new Expanded(
      child: new Padding(
        padding: const EdgeInsets.all(5.0),
        child: new Center(
          child: new AspectRatio(
            aspectRatio: controller.value.aspectRatio,
            child: new CameraPreview(controller),
          ),
        ),
      ),
    ),
    

相关问题