UIImage转PHAsset

网上很多PHAsset转UIImage的代码,没有UIImage转PHAsset的,今天有个同学刚好问,我正好研究一下,直接上代码吧:

    UIImage*image = [UIImageimageNamed:@"image"];

    [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{

        PHAssetChangeRequest *request = [PHAssetChangeRequest creationRequestForAssetFromImage:image];

        NSString *localIndentifier = request.placeholderForCreatedAsset.localIdentifier;

        PHFetchResult*assetResult = [PHAssetfetchAssetsWithLocalIdentifiers:@[localIndentifier]options:nil];

        PHAsset*asset = assetResult.firstObject;

    }error:nil];

另外需要注意,转换代码一定要写在PHPhotoLibrary的

- (void)performChanges:(dispatch_block_t)changeBlock completionHandler:(nullable void(^)(BOOL success, NSError *__nullable error))completionHandler;

或者

- (BOOL)performChangesAndWait:(dispatch_block_t)changeBlock error:(NSError *__autoreleasing *)error;

中,不然会报异常:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This method can only be called from inside of -[PHPhotoLibrary performChanges:completionHandler:] or -[PHPhotoLibrary performChangesAndWait:error:]'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容