2012-06-21 15 views
111

Xcode (4.3 kullanarak) yeni bir modelim ve bir görüntünün aygıtın kamera rulosuna nasıl kaydedileceğinden emin değilim. Şimdiye kadar yaptığım her şey, görüntüyü kaydetmek için düğme için bir IBAction oluşturdu. Kullanıcının kamera rulosuna görüntü kaydetmek için hangi kitaplık yöntemini veya işlevini kullanabilirim?Bir resmi kamera rulosuna nasıl kaydedebilirim?

cevap

212

UIImageWriteToSavedPhotosAlbum() işlevini kullanırsınız.

//Let's say the image you want to save is in a UIImage called "imageToBeSaved" 
UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil); 

Düzenleme:

UISaveVideoAtPathToSavedPhotosAlbum(videoPath, nil, nil, nil); 

Örneğin, Instagram yüklemek için bir video kaydetmek isteyebilirsiniz:

//ViewController.m 
- (IBAction)onClickSavePhoto:(id)sender{ 

    UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil); 
} 
+0

Diyelim ki '- (IBAction) onClickSavePhoto: (id) gönderen;' ViewController.h dosyasında, yukarıdakileri kullanarak ViewController.m dosyasına yerleştirmek için tam olarak neye ihtiyacım var? Tekrar çok teşekkürler! – user1470914

+1

@ user1470914 Düzenlememe bakın. Ayrıca, görüntüyü kamera rulosuna kaydedilecek yer neresidir? Zaten uygulamanızın paketinde mi, yoksa kullanıcı bir fotoğraf çekiyor ve daha sonra kamera rulosuna kaydediliyor mu? – pasawaya

+0

Sabrınız için teşekkürler qegal. Şu ana kadar bu konuyu tekrar gözden geçirme şansım olmadı. DÜZENLEME bize süper yardımcı. Resim, uygulamanın paketindedir. Uygulamada birkaç resim var ve bunlar küçük küçük resimler olarak görülebilir. Küçük bir küçük resim seçildiğinde, yeni bir görünüme gider ve tam ekran versiyonu görüntülenebilir. En üstteki nav'un ​​sağ köşesinde "kaydet" yazan bir düğme var ve bu, görüntüyü aygıtın rulo rulosuna kaydetmek istediğim düğme ki duvar kağıdı olarak da uygulanabilir. Yardımınız ve sabrınız için tekrar teşekkürler (casperOne'un bunu neden kapattığından emin değil). – user1470914

6

Referans olması için, benzer bir şekilde videoları kaydedebilirsiniz:

// Save video to camera roll; we can share to Instagram from there. 
-(void)didTapShareToInstagram:(id)sender { 
    UISaveVideoAtPathToSavedPhotosAlbum(self.videoPath, self, @selector(video:didFinishSavingWithError:contextInfo:), (void*)CFBridgingRetain(@{@"caption" : caption})); 
} 

- (void)    video: (NSString *) videoPath 
    didFinishSavingWithError: (NSError *) error 
       contextInfo: (void *) contextInfoPtr { 

    NSDictionary *contextInfo = CFBridgingRelease(contextInfoPtr); 
    NSString *caption   = contextInfo[@"caption"]; 

    NSString *escapedString = [videoPath stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; // urlencodedString 
    NSString *escapedCaption = [caption stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; // urlencodedString 

    NSURL *instagramURL  = [NSURL URLWithString:[NSString stringWithFormat:@"instagram://library?AssetPath=%@&InstagramCaption=%@", escapedString, escapedCaption]]; 

    [[UIApplication sharedApplication] openURL:instagramURL]; 
} 
29

İşte bir cevap f veya Fotoğraflar çerçevesini kullanarak iOS8.

Objective-C:

#import <Photos/Photos.h> 

UIImage *snapshot = self.myImageView.image; 

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ 
    PHAssetChangeRequest *changeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:snapshot]; 
    changeRequest.creationDate   = [NSDate date]; 
} completionHandler:^(BOOL success, NSError *error) { 
    if (success) { 
     NSLog(@"successfully saved"); 
    } 
    else { 
     NSLog(@"error saving to photos: %@", error); 
    } 
}]; 

Swift:

// Swift 3.0 
import Photos 

PHPhotoLibrary.shared().performChanges({ 
    PHAssetChangeRequest.creationRequestForAsset(from: snapshot) 
}, completionHandler: { success, error in 
    if success { 
     // Saved successfully! 
    } 
    else if let error = error { 
     // Save photo failed with error 
    } 
    else { 
     // Save photo failed with no error 
    } 
}) 

İşte Apple belgelerine bir link bu.

+0

Görüntüyü nasıl alabilirim url @ricardopereira –

+0

@Mansuu Lütfen https://stackoverflow.com/a/37248867/3641812 adresinden bir göz atın. – ricardopereira

İlgili konular