3

我需要上传大量照片并将这些照片发送到数据库。由于照片质量很高,完成和上传每张照片需要相当长的时间。我不需要非常高质量的照片,所以我需要压缩照片。如果我使用 Flutter MultiImagePicker 类,最好的解决方案是什么?

List<Asset> pickedImagesList = await MultiImagePicker.pickImages(maxImages: 25, enableCamera: false);
4

2 回答 2

2

您的软件包已经提出了一些压缩Asset对象的选项。

List<Asset> pickedImagesList = await MultiImagePicker.pickImages(maxImages: 25, enableCamera: false);
for (Asset asset in pickedImagesList) {
   ByteData assetData = await asset.getThumbByteData(
      width: // desired width,
      height: // desired height,
      quality: //desired quality,
   );
   // Send assetData to your database
}

编辑

我认为这可以保持你的纵横比:

double getAspectRatio(double originalSize, double desiredSize) => desiredSize / originalSize;

final aspectRatio = getAspectRatio(asset.originalWidth, imageDesiredWidth);
ByteData assetData = await asset.getThumbByteData(
   width: (asset.originalWidth * aspectRatio).round(),
   height: (asset.originalHeight * aspectRatio).round(),
   quality: //desired quality,
);
于 2020-07-24T08:57:28.743 回答
1

如果您想使用原始宽度和高度而不进行任何操作,请使用

getByteData(quality: 80)

反而

getThumbByteData(quality: 80)
于 2020-08-07T05:25:45.130 回答