Flutter中如何将CameraController的XFile转为Image类型?
How to convert CameraController's XFile to Image type in Flutter?
Flutter 的 CameraController
有一个 takePicture()
从相机拍照的方法,它给出 Future<XFile>
类型,所以我需要将它从 Image
类型转换为 Image
类型=14=] 包以使用另一种方法手动裁剪它。
如何转换?
这是我找到的解决方案:
import 'dart:io';
import 'package:image/image.dart' as img;
...
CameraController _controller;
...
final xFile = await _controller.takePicture();
final path = xFile.path;
final bytes = await File(path).readAsBytes();
final img.Image image = img.decodeImage(bytes);
您可以使用 .path 属性 从 XFlie 获取路径,然后使用
显示图像
Container(
child: Image.file(File(XFile.path)),
);
与采用的答案不同的两种解决方案:
使用cross_file_image依赖。
import 'package:cross_file_image/cross_file_image.dart';
Image(image: XFileImage(xfile));
调用readAsBytes
方法。
import 'dart:typed_data';
import 'package:flutter/cupertino.dart';
import 'package:cross_file/cross_file.dart';
Future<Image> xFileToImage(XFile xFile) async {
final Uint8List bytes = await xFile.readAsBytes();
return Image.memory(bytes).image;
}
Image(image: await xFileToImage(xFile));
Flutter 的 CameraController
有一个 takePicture()
从相机拍照的方法,它给出 Future<XFile>
类型,所以我需要将它从 Image
类型转换为 Image
类型=14=] 包以使用另一种方法手动裁剪它。
如何转换?
这是我找到的解决方案:
import 'dart:io';
import 'package:image/image.dart' as img;
...
CameraController _controller;
...
final xFile = await _controller.takePicture();
final path = xFile.path;
final bytes = await File(path).readAsBytes();
final img.Image image = img.decodeImage(bytes);
您可以使用 .path 属性 从 XFlie 获取路径,然后使用
显示图像Container(
child: Image.file(File(XFile.path)),
);
与采用的答案不同的两种解决方案:
使用cross_file_image依赖。
import 'package:cross_file_image/cross_file_image.dart'; Image(image: XFileImage(xfile));
调用
readAsBytes
方法。import 'dart:typed_data'; import 'package:flutter/cupertino.dart'; import 'package:cross_file/cross_file.dart'; Future<Image> xFileToImage(XFile xFile) async { final Uint8List bytes = await xFile.readAsBytes(); return Image.memory(bytes).image; }
Image(image: await xFileToImage(xFile));