![](/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.