如何在 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 中收听流值