我用ImagePicker拍摄了一张像文件一样保存的照片。我想要的是在上传到FirebaseStorage之前把它转换成png。问题是,当我试图使用这个函数转换它时:
File('test.png').writeAsBytesSync(encodePng(image));
它给了我错误,因为照片是保存像文件,而不是图像。我在googled上搜索了一些插件或函数来将它从文件转换到图像,但是没有发现任何具体的东西。有人能帮我吗,拜托?
编辑:为了确保我清楚地解释了它:我有照片‘Photo1.jpeg’,它像文件一样存储,因为这就是ImagePicker所做的。然后我想把这个文件转换成图像,然后把它转换成.png
发布于 2019-10-04 01:37:49
如果要将图像重新编码为PNG,则需要:
File.readAsBytes从文件中读取字节。这将为您提供一个与List<int>).Uint8List,然后需要解码这些字节(例如decodeJpg),将其转换为package:image的Image类型。接下来,需要在Image上使用encodePng。这将给您更多的字节(作为一个List<int>).File.writeAsBytes.将这些字节写入文件)。
尽管如此,解码JPEG并将其重新编码为PNG是毫无意义的;您只是在使图像占用比它所需要的更多的空间。
发布于 2020-01-24 12:35:01
使用此功能:
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;
}它以文件格式拍摄图像,并以图像格式返回图像。
不要忘记在调用函数时添加等待。
发布于 2019-10-03 18:31:28
下面是如何获取文件的编码路径。
File file = File('test.png);
String encodedImagePath = base64Encode(await file.readAsBytes());https://stackoverflow.com/questions/58224596
复制相似问题