file – 在Flutter中保存照片(尤其是相机胶卷)

file – 在Flutter中保存照片(尤其是相机胶卷),第1张

概述我无法弄清楚如何保存到相机胶卷(相当于React Native的CameraRoll saveToCameraRoll(). > Flutter camera建议使用path_provider获取应用程序目录,但似乎没有获取相机卷目录路径的选项. >我在CameraController.capture上遇到异常 相关的变化(只有相关的变化,以差异的形式)在这里:https://gist.githu 我无法弄清楚如何保存到相机胶卷(相当于React Native的CameraRoll saveToCameraRoll().

> Flutter camera建议使用path_provider获取应用程序目录,但似乎没有获取相机卷目录路径的选项.
>我在CameraController.capture上遇到异常

相关的变化(只有相关的变化,以差异的形式)在这里:https://gist.github.com/briankung/45f9d8438baab59ddcd3b6f3fe811d99

我的整个main.dart在下面是为了方便repro(搜索问题:查找相关部分):

import 'dart:async';import 'dart:io';import 'package:Flutter/material.dart';import 'package:camera/camera.dart';import 'package:Flutter/services.dart';import 'package:path_provIDer/path_provIDer.dart';List<CameraDescription> cameras;Future<Null> main() async {  SystemChrome.setPreferredOrIEntations([    DeviceOrIEntation.portraitUp,DeviceOrIEntation.portraitDown  ]);  cameras = await availableCameras();  runApp(new CameraApp());}class CameraApp extends StatefulWidget {  @overrIDe  _CameraAppState createState() => new _CameraAppState();}class _CameraAppState extends State<CameraApp> {  String _appDirectoryPath;  CameraController controller;  Future<voID> _requestAppDirectory() async {    // QUESTION: `path_provIDer` doesn't have getCameraRollDirectory()    Directory _appDirectory = await getApplicationdocumentsDirectory();    setState(() {      _appDirectoryPath = _appDirectory.path;    });  }  @overrIDe  voID initState() {    super.initState();    _requestAppDirectory();    controller = new CameraController(cameras[0],ResolutionPreset.medium);    controller.initialize().then((_) {      if (!mounted) {        return;      }      setState(() {});    });  }  @overrIDe  voID dispose() {    controller?.dispose();    super.dispose();  }  @overrIDe  Widget build(BuildContext context) {    if (!controller.value.initialized) {      return new Container();    }    return new MaterialApp(      Title: 'Flutter Demo',theme: new themeData(        primarySwatch: colors.red,),home: new Scaffold(        body: new Center(          child: new AspectRatio(            aspectRatio: controller.value.aspectRatio,child: new CameraPrevIEw(controller),floatingActionbutton: new floatingActionbutton(          tooltip: 'Increment',child: new Icon(Icons.camera),onpressed: () {            print('capturing');            print(_appDirectoryPath);            // QUESTION: this errors out            controller.capture(_appDirectoryPath);          },floatingActionbuttonLocation: floatingActionbuttonLocation.centerfloat,);  }}

日志信息如下:

I/Flutter ( 5471): capturingI/Flutter ( 5471): /data/user/0/com.example.mycameraapp/app_FlutterW/LegacyRequestMapper( 5471): convertRequestMetadata - control.awbRegions setting is not supported,ignoring valueW/LegacyRequestMapper( 5471): Only received metering rectangles with weight 0.W/LegacyRequestMapper( 5471): Only received metering rectangles with weight 0.I/RequestThread-0( 5471): Received jpeg.I/RequestThread-0( 5471): Producing jpeg buffer...W/LegacyRequestMapper( 5471): convertRequestMetadata - control.awbRegions setting is not supported,ignoring valueW/LegacyRequestMapper( 5471): Only received metering rectangles with weight 0.W/LegacyRequestMapper( 5471): Only received metering rectangles with weight 0.E/Flutter ( 5471): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:E/Flutter ( 5471): CameraException(IOError,Failed saving image)E/Flutter ( 5471): #0      CameraController.capture (package:camera/camera.dart:234:7)E/Flutter ( 5471): <asynchronous suspension>E/Flutter ( 5471): #1      _CameraAppState.build.<anonymous closure> (file:///Users/briankung/workspace/mobile/Flutter/my_camera_app/lib/main.dart:84:24)E/Flutter ( 5471): #2      _InkResponseState._handleTap (package:Flutter/src/material/ink_well.dart:478:14)E/Flutter ( 5471): #3      _InkResponseState.build.<anonymous closure> (package:Flutter/src/material/ink_well.dart:530:30)E/Flutter ( 5471): #4      GestureRecognizer.invokeCallback (package:Flutter/src/gestures/recognizer.dart:102:24)E/Flutter ( 5471): #5      TapGestureRecognizer._checkUp (package:Flutter/src/gestures/tap.dart:161:9)E/Flutter ( 5471): #6      TapGestureRecognizer.acceptGesture (package:Flutter/src/gestures/tap.dart:123:7)E/Flutter ( 5471): #7      GestureArenaManager.sweep (package:Flutter/src/gestures/arena.dart:156:27)E/Flutter ( 5471): #8      _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:Flutter/src/gestures/binding.dart:147:20)E/Flutter ( 5471): #9      _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:Flutter/src/gestures/binding.dart:121:22)E/Flutter ( 5471): #10     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:Flutter/src/gestures/binding.dart:101:7)E/Flutter ( 5471): #11     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:Flutter/src/gestures/binding.dart:64:7)E/Flutter ( 5471): #12     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:Flutter/src/gestures/binding.dart:48:7)E/Flutter ( 5471): #13     _invoke1 (dart:ui/hooks.dart:134:13)E/Flutter ( 5471): #14     _dispatchPointerDataPacket (dart:ui/hooks.dart:91:5)I/RequestQueue( 5471): Repeating capture request cancelled.

谢谢!

忘记版本号:

$Flutter --versionFlutter 0.2.8 • channel beta • https://github.com/Flutter/Flutter.gitFramework • revision b397406561 (10 days ago) • 2018-04-02 13:53:20 -0700Engine • revision c903c217a1Tools • Dart 2.0.0-dev.43.0.Flutter-52afcba357// pubspec.yamlcamera:  dependency: "direct main"  description:    name: camera    url: "https://pub.dartlang.org"  source: hosted  version: "0.1.2"path_provIDer:  dependency: "direct main"  description:    name: path_provIDer    url: "https://pub.dartlang.org"  source: hosted  version: "0.4.0"
解决方法 不幸的是,我不认为扑动目前暴露了这个功能.

您最好的选择可能是编写插件或使用平台频道来执行此 *** 作.您可以像在this example中一样使用临时目录,然后将路径传递给androID,在那里您将读取文件并将其插入到库中,如下所示:

MediaStore.Images.Media.insertimage(      getContentResolver(),yourBitmap,yourTitle,yourDescription);`

如果您在其中一个Flutter存储库中创建功能请求,并且有人决定通过为您编写插件来帮助您,那么您可能会很幸运.

总结

以上是内存溢出为你收集整理的file – 在Flutter中保存照片(尤其是相机胶卷)全部内容,希望文章能够帮你解决file – 在Flutter中保存照片(尤其是相机胶卷)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1004135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存