如何在 Flutter MultiImagePicker 中指定照片的质量?

Posted

技术标签:

【中文标题】如何在 Flutter MultiImagePicker 中指定照片的质量?【英文标题】:How can i specify the quality of the photo in Flutter MultiImagePicker? 【发布时间】:2020-11-14 02:23:12 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

您的包已经提出了一些压缩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,
);

【讨论】:

你好。也许你知道如何改变图像的宽度和高度并且图像的纵横比保持不变? 我已经用纵横比的例子编辑了我的答案。【参考方案2】:

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

getByteData(quality: 80)

改为

getThumbByteData(quality: 80)

【讨论】:

以上是关于如何在 Flutter MultiImagePicker 中指定照片的质量?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何在 Flutter 中为 Firebase (FCM) 注册令牌订阅ToTopic

Flutter:如何在 google_maps_flutter 中为标记图标设置动画?

Flutter - 如何在 Flutter 应用上实现 News Count

flutter - 如何在 dart/flutter 中收听流值

如何使用 flutter_webview 插件在 Flutter 中启用位置?

如何在我的 Flutter 应用中添加渐变背景?