【发布时间】:2019-06-08 06:42:20
【问题描述】:
我正在关注此blog 从图库中选择多张图片。对于 IOS,我使用GMImagePicker 从图库中选择多张图片。(在博客中建议使用 elcimagepicker,但现在 Nuget 商店中不可用)
我浏览了GMImagePickerusage part,但没有找到如何将所选图像添加到List 并将该值传递给MessagingCenter(就像android 实现一样)。在那个使用部分只讲述了选择器设置。任何人请给我任何执行此功能的示例代码?
嗨Lucas Zhang - MSFT,我试过你的代码,但有一个问题。在这里,您只通过messagecenter 传递一个文件路径,那么我应该使用列表来发送多个文件路径吗?
我将图片路径作为来自 android 的 string List 传递。请看下面添加的android部分代码。我应该在 IOS 中这样做吗?
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode == Result.Ok)
{
List<string> images = new List<string>();
if (data != null)
{
ClipData clipData = data.ClipData;
if (clipData != null)
{
for (int i = 0; i < clipData.ItemCount; i++)
{
ClipData.Item item = clipData.GetItemAt(i);
Android.Net.Uri uri = item.Uri;
var path = GetRealPathFromURI(uri);
if (path != null)
{
//Rotate Image
var imageRotated = ImageHelpers.RotateImage(path);
var newPath = ImageHelpers.SaveFile("TmpPictures", imageRotated, System.DateTime.Now.ToString("yyyyMMddHHmmssfff"));
images.Add(newPath);
}
}
}
else
{
Android.Net.Uri uri = data.Data;
var path = GetRealPathFromURI(uri);
if (path != null)
{
//Rotate Image
var imageRotated = ImageHelpers.RotateImage(path);
var newPath = ImageHelpers.SaveFile("TmpPictures", imageRotated, System.DateTime.Now.ToString("yyyyMMddHHmmssfff"));
images.Add(newPath);
}
}
MessagingCenter.Send<App, List<string>>((App)Xamarin.Forms.Application.Current, "ImagesSelected", images);
}
}
}
另外,我收到一个错误,截图添加如下:
【问题讨论】:
-
将您的表单更新到 3.x。
-
@LucasZhang-MSFT 我会这样做并更新你
-
你解决了吗?
-
@LucasZhang-MSFT 我在 Mac 上远程工作,现在我没有 mac 访问权限。当我拿到 Mac 时,我会进行更改并更新您。
-
@LucasZhang-MSFT 我在 android 部分有一个小问题。图片扩展名(.jpg 或 .png)未与 android 部分的路径一起保存。要将图像上传到服务器,我需要带有扩展名的完整图像名称。那么如何使用扩展名保存所选图像的完整名称?您能提出任何解决方案吗?
标签: image xamarin.forms xamarin.ios