2016-10-03 6 views
1

画像を電話機ギャラリーにエクスポートするには、ALAssetsLibraryを使用しましたが、Xcode 8.0はそのメソッドが廃止予定であることを通知しましたのでPHPhotoLibraryを使用します。私はALAssetsLibraryを使用する場合、メソッドは以下のようになります。PHPhotoLibraryを使用して画像を電話ギャラリーにエクスポートする方法

#import <AssetsLibrary/AssetsLibrary.h> 
-(void)exportToGallery{ 
    ALAssetsLibrary *assetsLib = [ALAssetsLibrary new]; 
    [assetsLib writeImageToSavedPhotosAlbum:image 
    metadata:[image properties]; 
    completionBlock:nil; 
} 

にはどうすれば同じ効果を持つようにPHPhotoLibraryを使用することができますか?

+0

はhttp://stackoverflow.com/これを試してみてください質問/ 37405691/replacement-alassertlibrary-t o-get-the-filename/37405786#37405786 –

+0

[写真をiPhoneフォトライブラリに保存する方法は?](http://stackoverflow.com/questions/178915/how-to-save-picture-to-iphone) -photo-library) –

+0

いいえ、その質問と回答が異なります – kenzolek

答えて

3

これを行う方法があります。

のObjective C

写真の読み込み後の枠組み

#import <Photos/Photos.h> 

その後、画像を保存して画像

UIImage * image = [UIImage imageNamed:@"DP.jpg"]; 

を作ります。画像はカメラロールに保存されます。
これは、写真の許可が ON であることを確認してくださいwriteImageToSavedPhotosAlbum

ALAssetsLibrary
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ 
     [PHAssetChangeRequest creationRequestForAssetFromImage:image]; 
    } completionHandler:^(BOOL success, NSError *error) { 
     if (success) { 
      NSLog(@"Image Saved"); 
     } 
     else { 
      NSLog(@"error in saving image : %@",error); 
     } 
    }]; 

と同じ動作します。あなたはXcodeの8のプロジェクトを作成した場合 はまた、あなたはあなたがまた、UIImageがあまりにも作るだけでなく、画像のURLを持つだけではなくcreationRequestForAssetFromImageメソッドを使用することができますInfo.plist

<key>NSPhotoLibraryUsageDescription</key> 
<string>Use Photos</string> 

でキーを追加する必要があります。

これらは、フォトフレームワークから使用できる方法です。

+ (instancetype)creationRequestForAssetFromImage:(UIImage *)image; 
+ (nullable instancetype)creationRequestForAssetFromImageAtFileURL:(NSURL *)fileURL; 
+ (nullable instancetype)creationRequestForAssetFromVideoAtFileURL:(NSURL *)fileURL; 

スウィフト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) 
    } 
} 

スウィフトのため写真枠組みのための他の方法は、以下のとおりです。

open class func creationRequestForAsset(from image: UIImage) -> Self 
open class func creationRequestForAssetFromImage(atFileURL fileURL: URL) -> Self? 
open class func creationRequestForAssetFromVideo(atFileURL fileURL: URL) -> Self? 
関連する問題