You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xamarin.Forms中实现图片与视频同页多选功能?

跨平台媒体多选(图片+视频)解决方案

针对你遇到的MediaPicker无法同时展示图片/视频、不支持多选的问题,推荐使用MediaGallery库(支持Xamarin和.NET MAUI),它可以直接在同一界面展示相册中的图片和视频,并支持多选。以下是具体实现步骤:

1. 安装依赖库

根据你的项目类型安装对应的NuGet包:

  • .NET MAUI:安装 Microsoft.Maui.MediaGallery
  • Xamarin.Forms:安装 Xamarin.MediaGallery

2. 配置平台权限

访问相册需要配置对应权限,否则会触发权限报错:

Android

在AndroidManifest.xml中添加权限声明:

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<!-- 兼容Android 12及以下版本 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

iOS

在Info.plist中添加相册访问权限说明:

<key>NSPhotoLibraryUsageDescription</key>
<string>需要访问相册以选择图片和视频</string>

3. 实现多选功能

调用MediaGallery的多选方法,直接同时展示图片和视频:

// 打开相册,允许选择图片和视频,最多选10个(设为0表示不限数量)
var pickOptions = new MediaPickOptions
{
    Title = "选择媒体文件",
    MediaTypes = MediaFileType.Image | MediaFileType.Video,
    SelectionLimit = 10
};

var selectedMedia = await MediaGallery.PickAsync(pickOptions);

4. 将选中媒体转换为字节列表

遍历选中的媒体文件,读取流并转换为字节数组:

List<byte[]> mediaBytesList = new List<byte[]>();

if (selectedMedia != null)
{
    foreach (var media in selectedMedia)
    {
        using (var stream = await media.OpenReadAsync())
        using (var memoryStream = new MemoryStream())
        {
            await stream.CopyToAsync(memoryStream);
            mediaBytesList.Add(memoryStream.ToArray());
        }
    }
}

这样就可以实现无需提前选择媒体类型,直接在同一界面多选图片和视频,最终得到字节列表用于后续操作。

内容的提问来源于stack exchange,提问作者bluedra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 04:12:23