热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何从PHAsset获取ALAssetURL?

如何解决《如何从PHAsset获取ALAssetURL?》经验,为你挑选了2个好方法。

你可以偷偷地使用未记录的 PHAsset.ALAssetURL财产† ,但我正在寻找记录的东西.


†在Objective-C中,这将有所帮助

@interface PHAsset (Sneaky)

@property (nonatomic, readonly) NSURL *ALAssetURL;

@end

holtmann.. 44

通过利用的localidentifier创建assetURL PHAsset.示例: PHAsset.localidentifierreturn91B1C271-C617-49CE-A074-E391BA7F843F/L0/001

现在使用32个第一个字符来构建assetURL,如:

assets-library://asset/asset.JPG?id=91B1C271-C617-49CE-A074-E391BA7F843F&ext=JPG

您可以JPG根据资产的UTI 更改扩展名(requestImageDataForAsset返回UTI),但在我的测试中,无论如何都会忽略assetURL的扩展名.



1> holtmann..:

通过利用的localidentifier创建assetURL PHAsset.示例: PHAsset.localidentifierreturn91B1C271-C617-49CE-A074-E391BA7F843F/L0/001

现在使用32个第一个字符来构建assetURL,如:

assets-library://asset/asset.JPG?id=91B1C271-C617-49CE-A074-E391BA7F843F&ext=JPG

您可以JPG根据资产的UTI 更改扩展名(requestImageDataForAsset返回UTI),但在我的测试中,无论如何都会忽略assetURL的扩展名.


我们必须这样做只是为了得到一个URL是荒谬的.
从localIdentifier获取GUID的正确方法是拆分第一个/.(有些GUID超过32个字符.)如果有人知道获取资产URL的更好方法,请在此处发布.这很黑,很容易打破未来的更新.
确保从localIdentifier中删除"/ L0/001",否则每次都会失败.

2> Matt..:

我希望能够获得资产的URL.但是,我已经意识到localIdentifier可以坚持而不是用来恢复PHAsset.

PHAsset* asset = [PHAsset fetchAssetsWithLocalIdentifiers:@[localIdentifier] options:nil].firstObject;

可以使用以下方式转换旧版资产网址:

PHAsset* legacyAsset = [PHAsset fetchAssetsWithALAssetUrls:@[assetUrl] options:nil].firstObject;
NSString* cOnvertedIdentifier= legacyAsset.localIdentifier;

(在那种方法被淘汰之前......)

(感谢霍尔特曼 - localIdentifier隐藏在其中PHObject.)


你说的是什么_may_是真的,但它似乎只与实际(我认为,明确陈述)的问题倾斜相关.
我发现创建一个单独的自我回答问题是一种更好的格式,适用于您所做的任何此类实现.我已经做了很多,尽管他们告诉你,他们还没有失明.:)你甚至可以链接到这个问题.
推荐阅读
author-avatar
他妈的碧海连天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有