我使用 ImagePicker 拍照,并像 File 一样保存。我想要的是在将其上传到 FirebaseStorage 之前将其转换为 png。问题是,当我尝试使用此函数转换它时:
File('test.png').writeAsBytesSync(encodePng(image));
它给了我错误,因为照片是像文件而不是图像一样保存的。我在谷歌上搜索了某种类型的插件或函数来将其从文件转换为图像,但没有找到具体的信息。有人可以帮我解决这个问题吗?
编辑:为了确保我解释清楚:我有像文件一样存储的照片“photo 1.jpeg”,因为这就是 ImagePicker 的作用。然后我想将此文件转换为图像,然后将其转换为 .png
使用这个函数:
Future<Image> convertFileToImage(File picture) async {
List<int> imageBase64 = picture.readAsBytesSync();
String imageAsString = base64Encode(imageBase64);
Uint8List uint8list = base64.decode(imageAsString);
Image image = Image.memory(uint8list);
return image;
}
Run Code Online (Sandbox Code Playgroud)
它以文件格式拍摄照片并以图像格式返回图像。
调用函数时不要忘记添加await 。
如果您想将图像重新编码为 PNG,您将需要:
File.readAsBytes。这将为您提供一个Uint8List(与 兼容List<int>)。decodeJpg)以将它们转换为package:image的Image类型。encodePng在Image. 这将为您提供更多字节(作为List<int>)。File.writeAsBytes。话虽如此,解码 JPEG 并将其重新编码为 PNG 是毫无意义的;你只是让图像占用了比它需要的更多的空间。
| 归档时间: |
|
| 查看次数: |
4384 次 |
| 最近记录: |