Flutter - 原生交互 - 相机Camera - 曝光,缩放,录制视频

解决Flutter Camera相机插件全屏幕画面拉伸问题 Camera是Flutter官方发布的相机插件,依赖这个库,可以完成Flutter APP里面拍照,录制视频的功能,但是如果直接把库里面的CameraPreview控件设置当前屏幕的宽高,展现出来的画面会拉伸严重、影响到图片的拍摄效果。 解决思路如下:不必给CameraPreview控件设置固定的宽高,它会自适应高度,然后用 Transform.scale方法将CameraPreview控件包裹,缩放至全屏即可。整个相机拍照代码如下: // Copyright 2013 The Flutter Author 阅读详情

曝光

Flutter上CupertinoSlider组件的样式是iOS上的Slider,使用该组件控制曝光量,
Camera插件提供的API是CameraController的

Future<double> setExposureOffset(double offset) async {
   
   
...
}

最后调用iOS端的系统方法控制曝光值

- (void)setExposureTargetBias:(float)bias completionHandler:(nullable void (^)(CMTime syncTime))handler API_AVAILABLE(ios(8.0), macCatalyst(14.0), tvos(17.0)) API_UNAVAILABLE(macos, visionos);
class TakePictureScreenState extends State<TakePictureScreen> {
   
   
    /// 设置默认值
    double currentExposure = 0.0;
    /// 是否显示曝光Slider组件
    bool _showedExposure = false;
    ...
    /// 使用CupertinoSlider
    
    Widget showExposure() {
   
   
        if (_showedExposure) {
   
   
            return SizedBox(
                height: 44,
                width: MediaQuery.of(context).size.width,
                child: CupertinoSlider(
                    /// 滑动Slider时触发的事件
                    onChanged: (value) {
   
   
                        setState(() {
   
   
                            /// 调整相机的曝光值
                            _controller.setExposureOffset(value);
                            currentExposure = value;
                        });
                    },
                    min: -3, /// 设置作用范围
                    max: 3,
                    value: currentExposure, /// 当前Slider显示的值
                ),
            );
        }
    return SizedBox.shrink();
  }
}
202506131634.gif

两指手势缩放

系统的相机可以双指进行缩放操作,在Flutter中可以在GestureDetector来实现

/// 最小缩放比例
double _minAvailableZoom = 1.0;
/// 最大缩放比例
double _maxAvailableZoom = 1.0;
/// 记录当前的缩放比例
double _currentScale = 1.0;
/// 当前的基础值
double _baseScale = 1.0;

Listener(
    onPointerDown: (_) => _pointers++,
    onPointerUp: (_) => _pointers--, // 用来判断是否双指
    child: CameraPreview(
            _controller,
            // Creates a widget that defers its building until layout.
            // 布局完成再创建
            child: LayoutBuilder(
                builder: (BuildContext context, BoxConstraints constraints) {
   
   
                  return GestureDetector(
                            // Opaque targets can be hit by hit tests, causing them to both receive events within their bounds and prevent targets visually behind them from also receiving events.
                            // 相机Widget能收到手势
                            behavior: HitTestBehavior.opaque, 
                            // 设置开始缩放事件
                            onScaleStart: _handleScaleStart,
                            // 设置缩放值变化事件
                            onS
flutter 处理前置摄像头拍出来的图片翻转问题,截取正方形图片问题 最近在做flutter项目的时候用到前置摄像头,拍摄的时候拍出来的图片是翻转的,找到很多办法都没有解决方案。找来找去就找到了image_editor插件。 阅读详情

相关推荐

Flutter Camera插件使用入门

文章目录0. 前言1. 安装1.1 iOS1.2 Android2. 测试项目2.1 示例代码2.2 演示结果3. 代码讲解3.1 cameras描述3.2 camera controller3.3 dispose销毁对象3.4 build 方法3.3 CameraPreview 对象 0. 前言 开发时需要用到Camera 来进行视频图片截取, 因此来写一些这方面内容 1. 安装 在pubspec.yaml 文件中添加 camera 依赖, 这里推荐使用一个vscode 插件: Pubspec Assist: 可以很方便的管理dart 的包依赖 dependencies: flutte

利用Python搭建用户画像系统

用户画像是当下很多企业都会提及的概念,多数情况下会和大数据以及营销挂钩。本文将对用户画像的相关知识进行进行简单的介绍,并利用Python去实现一个简单的用户画像系统。 1.什么是用户画像 用户画像可以理解成是海量数据的标签,根据用户的目标、行为和观点的差异,将他们区分为不同的类型,然后每种类型中抽取出典型特征,赋予名字、照片、一些人口统计学要素、场景等描述,形成一个人物原型 。 用户画像 =...

黎荣恒的博客 3万+

SoapUI 5.0 模拟WebService接口实战:从WSDL文件到Mock服务端完整流程

本文详细介绍了如何使用SoapUI 5.0模拟WebService接口,从解析WSDL文件到搭建完整的Mock服务端流程。通过实战案例和效率技巧,帮助开发者快速掌握接口模拟技术,提升开发与测试效率。

weixin_26833139的博客 407

从零开始理解异构算力调度:全国一体化算力算网平台实战解析

本文深入解析了异构算力调度技术在全国一体化算力算网平台中的实战应用。通过资源抽象层设计、动态感知引擎和跨云调度算法,实现AI训练任务的高效资源分配,显著提升计算效率并降低成本。特别针对GPU等异构算力的智能调度方案,为多云协同环境下的AI开发提供实用指南。

weixin_28730927的博客 334

【目标检测】yoloV5算法详解

一、与yoloV4相比,yoloV5的改进 输入端:在模型训练阶段,使用了Mosaic数据增强、自适应锚框计算、自适应图片缩放 基准网络:使用了FOCUS结构和CSP结构 Neck网络:在Backbone和最后的Head输出层之间插入FPN_PAN结构 Head输出层:训练时的损失函数GIOU_Loss,预测筛选框的DIOU_nns 二、yoloV5结构框架 CBL:CBL模块是由Conv+BN+Leaky_relu激活函数组成 Res unit:借鉴ResNet中的残差结构,用来构建深层网络,CBM是

qq_40373651的博客 2万+

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

清影的博客 6283

2025目标检测新方向:弱监督目标检测的最新论文研究与应用

2025目标检测新方向:弱监督目标检测的最新论文研究与应用 ,人工智能,计算机视觉,大模型,AI,本文聚焦2025年弱监督目标检测新方向,阐述其基础概念,包括弱监督学习定义、标注形式及面临的定位不准等挑战。介绍最新论文研究的多种算法,如基于点标注的算法等,还涉及相关模型、应用领域,以及评价指标、数据集、实现工具框架,分析未来趋势与补充挑战及解决方案,为该领域研究提供全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

【C# + HALCON 机器视觉】HALCON经典算子:光流法运动分析(optical_flow_mg)

摘要:本文面向智能监控人流统计需求,研究C#与HALCON集成开发中optical_flow_mg算子的应用。通过RTSP获取视频流,利用光流法计算运动矢量,结合形态学操作与区域筛选实现行人区域分割,最终完成人流量统计与热力图可视化。详细阐述ROI局部处理等性能优化策略、try-catch异常捕获机制及跨平台集成方案。实验表明,该系统检测准确率达93.6%,单帧处理时间42ms,为公共场所人流量统计提供了完整可行的技术方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1442

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: Flutter - 原生交互 - 相机Camera - 02
下一篇: Flutter - 原生交互 - 相册
忘川三
博客等级 码龄12年 208粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值