为了将图像导出到电话库,我尝试使用ALAssetsLibrary,但是Xcode 8.0告诉我,这个方法是不推荐的,我应该使用PHPhotoLibrary。当我使用ALAssetsLibrary时,方法如下所示:
#import <AssetsLibrary/AssetsLibrary.h>
-(void)exportToGallery{
ALAssetsLibrary *assetsLib = [ALAssetsLibrary new];
[assetsLib writeImageToSavedPhotosAlbum:image
metadata:[image properties];
completionBlock:nil;
}我如何使用PHPhotoLibrary来产生同样的效果?
发布于 2016-10-03 16:27:51
有办法做到这一点。
目标C
导入Photos框架
#import <Photos/Photos.h>那就把你的形象
UIImage * image = [UIImage imageNamed:@"DP.jpg"];那就保存图像。该图像将保存到相机辊。
这将与writeImageToSavedPhotosAlbum of ALAssetsLibrary一样工作。
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
[PHAssetChangeRequest creationRequestForAssetFromImage:image];
} completionHandler:^(BOOL success, NSError *error) {
if (success) {
NSLog(@"Image Saved");
}
else {
NSLog(@"error in saving image : %@",error);
}
}];确保照片的权限是ON。此外,如果您已经创建了Xcode 8项目,则需要在Info.plist中添加一个键。
<key>NSPhotoLibraryUsageDescription</key>
<string>Use Photos</string>您还可以使用creationRequestForAssetFromImage方法,不仅与UIImage制作,而且也与图像URL。
这些是您可以从Photos 中使用的方法。
+ (instancetype)creationRequestForAssetFromImage:(UIImage *)image;
+ (nullable instancetype)creationRequestForAssetFromImageAtFileURL:(NSURL *)fileURL;
+ (nullable instancetype)creationRequestForAssetFromVideoAtFileURL:(NSURL *)fileURL;Swift 3.0
let image = UIImage(named: "DP.jpg")
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAsset(from: image!)
}) { (success:Bool, error:Error?) in
if success {
print("Image Saved Successfully")
} else {
print("Error in saving:"+error.debugDescription)
}
}用于Swift的Photos 的其他方法有:
open class func creationRequestForAsset(from image: UIImage) -> Self
open class func creationRequestForAssetFromImage(atFileURL fileURL: URL) -> Self?
open class func creationRequestForAssetFromVideo(atFileURL fileURL: URL) -> Self?https://stackoverflow.com/questions/39834482
复制相似问题