Dart 图像到本地存储中的文件

问题描述

我使用的是 image 包中的 3.9.2 类。我必须从互联网下载图像并将其保存在我的本地存储中。然后修改此图像并保存更改。我已经完成了前 2 个步骤,但是当我保存文件时,文件已损坏并且图像查看器无法识别为图像文件。这是修改后保存图片代码

Image

var response = await client.get(urlToImage); var img = await File('./network_image.jpg').writeAsBytes(response.bodyBytes); Image image = decodeImage(img.readAsBytesSync()) var f = await File('./image.jpg').writeAsBytes(image.getBytes()); // this doesnt work // var f = await File('./image.jpg').writeAsBytes(image.data); // this doesnt work 需要 File.writeAsBytesList<int> bytesImage.data 分别返回 Image.getBytes()Uint32List

我没有使用 Flutter,只在命令行程序中使用 dart。

解决方法

图像对象以未编码的格式存储图像数据。请记住,您使用 decodeImage 对其进行了解码。它存储图像的原始颜色。您需要重新编码图像数据,或者您的图像查看器需要处理 getBytes 返回的任何图像格式的数据。

更简单的解决方案可能是重新编码。你似乎想要一个JpegEncoder

var f = await File('./image.jpg').writeAsBytes(JpegEncoder().encodeImage(image));