如何在Flutter的相机包中设置分辨率

gywdnpxw  于 2023-08-07  发布在  Flutter
关注(0)|答案(2)|浏览(354)

我正在使用Camera package's相机预览的flutter应用程序。
我初始化相机控制器如下:

final controller = CameraController(
  _cameras[0],
  ResolutionPreset.ultraHigh,
  enableAudio: false,
  imageFormatGroup: ImageFormatGroup.bgra8888,
);

字符串
ResolutionPreset枚举有以下选项:

enum ResolutionPreset {
  /// 352x288 on iOS, 240p (320x240) on Android
  low,

  /// 480p (640x480 on iOS, 720x480 on Android)
  medium,

  /// 720p (1280x720)
  high,

  /// 1080p (1920x1080)
  veryHigh,

  /// 2160p (3840x2160)
  ultraHigh,

  /// The highest resolution available.
  max,
}


分辨率必须为4032x2034。如何使用自定义分辨率?

bihw5rsg

bihw5rsg1#

ResolutionPreset枚举不提供设置自定义分辨率的选项。作为解决方法,您可以使用ResolutionPreset.max,然后调整图像大小。使用image包,您可以将图像大小调整为所需的widthheight并将其写入存储器。

// Read a jpeg image from file path
Image image = decodeImage(File('image path').readAsBytesSync());

// Resize the image
Image resizedImage = copyResize(image, width: 4032, height: 2034);

// Save the image as jpg
File('out/image-resized.jpg')
    ..writeAsBytesSync(encodeJpg(resizedImage, quality: 100));

字符串

pkln4tw6

pkln4tw62#

唯一的方法是在运行时更改cameraController值。
让我们从构造和初始化开始:

CameraController cameraController = CameraController(cameras[0], 
    ResolutionPreset.low, enableAudio: false); // the state field 

@override
void initState() {
   cameraController.initialize();
   // ...
}

字符串
之后,你可以像这样改变依赖关系:

_changeResolution() async {
    cameraController = CameraController( cameras[0], 
          ResolutionPreset.veryHigh, // new resolution
              enableAudio: false);
    await cameraController.initialize(); // initialize again
    setState(() {}); // changes UI
 }

相关问题