image - 如何将图像转换为文件?
问题描述
Image
将图像保存到不是从画廊或相机拍摄的设备的正确方法是什么?
在 PageA 中,有一个相机按钮允许用户捕获图像。一旦图像被捕获,它将转到 PageB (EditImagePage)。一旦用户完成图像编辑,它将返回到 PageA,并将图像保存到设备。
页面A
@override
userImage(File images) async { // when user has captured image, it will run this code
if (images != null) {
Image image = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => EditImagePage(images.path), // go to edit image page
));
// convert image to File
// call copyImage function
} else {
}
}
页面B
IconButton(
icon: Icon(Icons.check),
onPressed: () async {
Uint8List bytes = await _controller.exportAsPNGBytes();
var image = Image.memory(bytes);
return Navigator.pop(context, image); // bring Image back to PageA
}),
我有此代码用于将图像保存到设备。如何将其更改为文件?
Future<File> copyImage(File image) async {
var savedDir = await getApplicationDocumentsDirectory();
String appDocPath = savedDir.path;
var fileName = FileUtils.basename(image.path);
return await image.copy('$appDocPath/' + '$fileName');
}
解决方案
您可以将图像存储到设备内部存储,将图像、资产图像转换为文件并存储到设备存储中。
首先获取您的图像路径,制作文件并为图像 writeAsBytes。
您可以编写如下代码:
import 'dart:async';
import 'dart:io';
import 'package:flutter/services.dart' show rootServices;
import 'package:path_provider/path_provider.dart';
Future<File> convertImageToFile(String imagePath) async {
final byteData = await rootServices.load('assets/$imagePath');
final file = File('${(await getTemporaryDirectory()).path}/$imagePath');
await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
return file;
}
需要存储访问权限,别忘了。
推荐阅读
- reactjs - 如何使用 React Material UI 将不同的颜色阴影传递给组件
- firebase - 云功能中的Firebase时间戳不显示时间
- python - SKLearn 是否有最低硬件要求?
- react-native - React Native Elements 处理 ListItem 点击
- r - 使用 facet_wrap 将 r 平方注释到 ggplot
- iis - Windows Server 2008 R2-命令提示符-php7ts.dll 丢失
- java - 如何在 selenide 中使用 List <> 和 WebElement?
- vue.js - 可排序在带有复选框的 el-table-column 中不起作用
- r - R 脚本视觉。强制 Y 轴值显示为文本
- python-3.x - 如何在 Python 中正确使用迭代器?Python初学者