我使用CameraPreview来测量对象的高度,但是问题是我无法全屏设置cameraPreview高度。
我尝试过定位的小部件,它会填满整个屏幕,但图像会被拉伸。 我尝试过 Transform Widget ,但是高度不能全屏显示,即将到来空白。图像未拉伸。
我的代码:
final size = MediaQuery.of(context).size;
final deviceRatio = size.width / size.height;
return Stack(
children: <Widget>[
Transform.scale(
scale: controller.value.aspectRatio/deviceRatio,
child: new AspectRatio(
aspectRatio: controller.value.aspectRatio,
child: new CameraPreview(controller),
),
),);
请帮助我适应CameraPreview“ FULLSCREEN”,而不会产生图像拉长的情况。
答案 0 :(得分:4)
CameraValue.aspectRatio 返回宽度/高度而不是高度/宽度,因为 0.7.0,CameraPreview 现在处理 AspectRatio 本身,因此 imo 工作代码片段如下:
#include <stdio.h>
int check(int num){
if (num%2 == 0){
return 0;
}else{
return 1;}
}
int main(){
int a;
cin>>a;
if(check(a)){
return 0;
}else{
return 1;}
return 0;}
更新:
在通过变换缩放后,在 TransitionRoute 中使用时,预览可能会超出屏幕尺寸限制。 (在 CupertinoPageRoute 中托管时,拖动手势会清楚地显示这一点)。
所以我认为剪辑预览以使其与屏幕尺寸完全匹配是个好主意。
/// only work inside WidgetsApp or MaterialApp, which introduces a MediaQuery
final scale = 1 / (controller.value.aspectRatio * MediaQuery.of(context).size.aspectRatio);
return Transform.scale(
scale: scale,
alignment: Alignment.topCenter,
child: CameraPreview(controller),
);
答案 1 :(得分:0)
问题已通过将“中心”窗口小部件包装在“转换”窗口小部件中解决
final size = MediaQuery.of(context).size;
final deviceRatio = size.width / size.height;
return Stack(
children: <Widget>[
Center(
child:Transform.scale(
scale: controller.value.aspectRatio/deviceRatio,
child: new AspectRatio(
aspectRatio: controller.value.aspectRatio,
child: new CameraPreview(controller),
),
),),);
答案 2 :(得分:0)
我关注了 https://flutter.dev/docs/cookbook/plugins/picture-using-camera
中的演示而且我没有自定义 CameraPreview 的 AspectRatio(实际上我做了但它不起作用)。
我解决的方法很简单。
return Stack(
children: [
Container(
width: double.infinity,
height: double.infinity,
child: CameraPreview(_cameraController))
],
);
我正在使用 Container 小部件的属性 width 和 height 使 CameraPreview 拉伸为全屏。