当前位置: 首页 > news >正文

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

曝光

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;.../// 使用CupertinoSliderWidget 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,// 设置缩放值变化事件
http://www.lryc.cn/news/571056.html

相关文章:

  • 【JSON-To-Video】AI智能体开发:为视频图片元素添加动效(滑入、旋转、滑出),附代码
  • 光谱相机的多模态成像技术详解
  • 数据仓库面试题合集⑥
  • 理解基本的RPC实现:从概念到实践
  • 2.涉及一个端到端的时间序列预测解决方案
  • 【Linux指南】文件内容查看与文本处理
  • 搜狗主动提交url并反馈快照更新软件(含源码)
  • 区间交集:区间选点
  • 231个web前端常用的javascript特效分享
  • 【C/C++开源库】适合嵌入式的定时器调度器
  • eXtremeComponents
  • Node.js Erlang比较
  • 第一次使用pycharm遇到的问题
  • 第二章 模型的评估与选择
  • java数据结构-栈、队列详解
  • LangGraph--框架核心思想
  • 3DS MAX三维建模平面基础篇(平面图形的创建和可编辑样条线的使用)
  • 怎样解决虚拟内存不足问题
  • 网站重构技术:XML,XHTML代码规范,样式表调用方式,CSS布局要点
  • 1433,3306,3389端口的利用
  • 经典智能手机诺基亚N78上能用的UCWEB 7.0正式版下载
  • 2010最牛歌曲《郑钱花》——川子
  • 大可乐android 4.3刷机包,大可乐2代MC002线刷刷机教程_大可乐MC002线刷rom系统刷机包...
  • 80x86的汇编器
  • DGL图神经网络库使用大全
  • 属狗的人2012年运程-易久堂风水精准预测
  • Windows网络编程基础
  • 51单片机学习(1)-软件keil下载
  • Nginx超快速入门
  • 复印机维修简明学习教程