![](/img/trans.png)
[英]How to upload image from gallery to web api 2 in ios xamarin studio
[英]Xamarin iOS where are images from gallery
我正在寻找一种方法来循环 iOS 设备上的每个图像。
我已经尝试过
var library = new ALAssetsLibrary();
library.Enumerate(ALAssetsGroupType.Library, GroupEnumerator, Console.WriteLine);
library.Enumerate(ALAssetsGroupType.Album, GroupEnumerator, Console.WriteLine);
library.Enumerate(ALAssetsGroupType.SavedPhotos, GroupEnumerator, Console.WriteLine);
library.Enumerate(ALAssetsGroupType.All, GroupEnumerator, Console.WriteLine);
但是当我调试所有列表时都是空的。
如何检索保存在设备(图库)中的所有图像的列表?
这是我(尝试)列出所有图像的完整类代码
using AssetsLibrary;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace AG.iOS.Services
{
public class iOSGalleryContent : IGalleryContent
{
public static readonly List<string> ImageExtensions = new List<string> { ".JPG", ".JPE", ".BMP", ".GIF", ".PNG" };
List<string> ImagesNames = new List<string>();
public List<string> GetImagesNames()
{
var library = new ALAssetsLibrary();
library.Enumerate(ALAssetsGroupType.Library, GroupEnumerator, Console.WriteLine);
library.Enumerate(ALAssetsGroupType.Album, GroupEnumerator, Console.WriteLine);
library.Enumerate(ALAssetsGroupType.SavedPhotos, GroupEnumerator, Console.WriteLine);
library.Enumerate(ALAssetsGroupType.All, GroupEnumerator, Console.WriteLine);
return ImagesNames;
}
private void GroupEnumerator(ALAssetsGroup group, ref bool shouldStop)
{
if (group == null)
{
shouldStop = true;
return;
}
if (!shouldStop)
{
group.Enumerate(AssetEnumerator);
shouldStop = false;
}
}
private void AssetEnumerator(ALAsset asset, nint index, ref bool shouldStop)
{
if (asset == null)
{
shouldStop = true;
return;
}
if (!shouldStop)
{
ImagesNames.Add(asset.AssetUrl.AbsoluteString);
Console.WriteLine(String.Format("Item[{0}] : {1}", index, asset.ToString()));
shouldStop = false;
}
}
}
}
这是一个从所有相册中获取图像的最小代码示例。 为您的目的修改它应该相对容易。 我没有试过代码,但应该没问题。
assetsLibrary = new ALAssetsLibrary();
photoAssets = new List<ALAsset>();
assetsLibrary.Enumerate (ALAssetsGroupType.Album, (ALAssetsGroup group, ref bool stop) => {
group.SetAssetsFilter (ALAssetsFilter.AllPhotos);
group.Enumerate ((ALAsset asset, nint index, ref bool st) => {
int notfound = Int32.MaxValue;
if (asset != null && index != notfound) {
photoAssets.Add (asset);
}
});
});
Xamarin 有一个 Xamarin.iOS 示例可以执行此操作: MediaNotes
奇怪的是,代码运行良好......调试器指向错误的方向,因为他无法向我展示 stringUrl 列表的内容。
所以,请随意使用它。 它做它应该做的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.