推荐使用 MediaPicker.PickPhotosAsync 选择图片,支持多选、压缩、自动旋转;单张用 PickPhotoAsync,Android 13+ 默认启用无需权限的 Photo Picker,旧版需存储权限,iOS 自动申请相册权限,Windows/macOS 暂不支持相册选择。
在 .NET MAUI 中,从相册选择图片推荐使用 MediaPicker.PickPhotosAsync,这是官方封装的跨平台媒体选择器,支持多选、尺寸压缩、自动旋转等实用功能,且 Android 13+ 默认调用系统照片选择器(Photo Picker),无需额外权限。
调用 PickPhotoAsync 即可打开系统相册,用户选一张后返回 FileResult:
var file = await MediaPicker.PickPhotoAsync();
null,需判空处理using var stream = await file.OpenReadAsync();
使用 PickPhotosAsync 并设置 SelectionLimit 参
数,例如最多选 10 张:
var results = await MediaPicker.PickPhotosAsync(new MediaPickerOptions { SelectionLimit = 10 });List,为空表示用户取消操作在 MediaPickerOptions 中可指定常见后处理行为,避免手动压缩或旋转:
MaximumWidth / MaximumHeight:等比缩放至指定尺寸内(单位像素)CompressionQuality = 85:JPEG 压缩质量(0–100)RotateImage = true:按 EXIF 自动校正方向PreserveMetaData = false:默认不保留元数据(减小体积)大部分场景无需额外配置,但要注意:
READ_MEDIA_IMAGES 权限);Android 12 及以下仍需申请存储权限PickPhotosAsync 返回空列表)基本上就这些。用好 PickPhotosAsync 就能覆盖绝大多数图片选择需求,不复杂但容易忽略预处理参数和平台兼容性细节。