1

我正在开发一个 iMac 桌面应用程序,它能够将普通照片以及照片库(以前的 iPhotos 库)上传到 Flickr、SmugMug 等在线服务。在升级到 Sierra 之前,我能够获取 iPhotos 的详细信息并且也可以上传,但升级后这些文件/目录不存在。

下面是我获取文件的块:

string PhotosLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "Photos Library.photoslibrary/Database/apdb/Library.apdb");

但是上面在 Sierra 10.12 中不再起作用,如果我去 finder 本身找到上述路径,那么我会找到“数据库”目录但没有“apdb”,我可以通过它获取 Library.apdb

我已经用谷歌搜索但没有运气,任何人都可以告诉我一些关于如何使用 C# 获取照片库文件的指示。

如果我错过了任何要分享的信息,请告诉我。谢谢。

4

1 回答 1

1

如果您的情况允许,可以使用媒体库框架。

NSDictionary<NSString, NSObject> options = new NSDictionary<NSString, NSObject>(
    new[] { MLMediaLibrary.MediaLoadSourceTypesKey, MLMediaLibrary.MediaLoadIncludeSourcesKey },
    new[] { new NSString(MLMediaSourceType.Image.ToString()), MLMediaSource.MediaSourcePhotosIdentifier }
);
var ml = new MLMediaLibrary(options);
ml.AddObserver("mediaSources", 0, (obj) => Console.WriteLine("Loaded"));
var src = ml.MediaSources; // returns null first time

为了访问MLMediaLibrary,您的应用程序必须经过沙盒处理和代码签名。

另请参阅https://stackoverflow.com/a/29626032以了解如何处理 entitlements.plist。

于 2017-03-29T13:07:09.230 回答