2012-10-02 11 views
9

Ben Fotoğraf Albümüne bir UIImage kurtarmaya çalışıyorum Photo Album kaydet UIImage. Ben Severl metot denedim sonuncusu:writeImageToSavedPhotosAlbum

-(IBAction)captureLocalImage:(id)sender{ 

[photoCaptureButton setEnabled:NO]; 

// Save to assets library 
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 

[library writeImageToSavedPhotosAlbum: imageView.image.CGImage metadata:nil completionBlock:^(NSURL *assetURL, NSError *error2) 
{ 
    //    report_memory(@"After writing to library"); 
    if (error2) { 
     NSLog(@"ERROR: the image failed to be written"); 
    } 
    else { 
     NSLog(@"PHOTO SAVED - assetURL: %@", assetURL); 
    } 

    runOnMainQueueWithoutDeadlocking(^{ 
     //     report_memory(@"Operation completed"); 
     [photoCaptureButton setEnabled:YES]; 
    }); 
}]; 

} 

imageview Ben kaydetmek istediğiniz resmi içeren bir UIImageView olduğunu. Oturum açıldığında "PHOTO SAVED - assetURL: (null)" ifadesini aldım ve fotoğraf kitaplığa kaydetmiyor.

Neyi yanlış yapıyorum? Hatta kullanabilirsiniz varlıklar kütüphanesini kullanarak fotoğraf kaydetmek açıklar

+0

Bendede aynı sorun var. Çözümü henüz çözemedim .. – drhr

+0

Aşağıda cevabımı kontrol edin. Benimkini çözdüm belki sana da yardım ederdi. – Idan

cevap

2

Kontrol dışarı bu sample .. ..

..

UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo); 

cehck dışarı onun bağlantı How to save picture to iPhone photo library?

+0

Ben bunları denedim ve aynı sonucu. Bu mümkün mü, çünkü yerel kütüphaneden fotoğraf çekiyorum ve iyi kapatmıyor ya da böyle bir şey yapmıyor muyum? Aldığım fotoğrafı görebiliyorum ama kaydedemiyorum. u bazı örnek kodlar sağlamak eğer benzer bir sorunu olan, i zaten sorun bu kod parçası ile değil, o çözdük – Idan

+1

çaresizim. Tam problemi yukarda yayınladım. Teşekkürler. – vishy

+1

.. u yardımcı olabilir, ... – Idan

8

sadece bu kullanmak fotoğraf kitaplığınızda görüntüyü kaydetmek için feryat hat

UIImageWriteToSavedPhotosAlbum(imageView.image,nil,nil,nil); 

:) Ben GPUImage kullanıyorum

+1

Bence OP, sadece belirli bir albüme nasıl kaydedileceğini soruyor, sadece görüntüyü genel olarak nasıl kaydedeceğimi değil. (Fark ettim ki oyuna geç kaldım, ama önemli bir farkım var gibi görünüyor) –

+0

İran bir fotoğrafın fotoğraf albümüne kaydedilmesinde sorun yaşadığını söyledi. Bu, belirli bir albüme kaydetmek istediği gibi ses çıkarır. 1. Idan cevabınızı kabul etmedi. Kendi cevabını kabul etti. Aşağı kaydır ve bak. 2. Yanlış değilsiniz, fakat tüm soruya cevap vermiyorsunuz. Benim düşünceme göre, @vishy, ​​özellikle açık soruyu, kamera rulosunun nasıl kaydedileceğini değil, belirli bir albüme nasıl cevap verebileceğinin çok daha iyi bir işini yapıyor. –

+0

Paras, açıkça katılmıyorum ve herhangi bir iletişim özel sohbet üzerinden olmalıdır.Temel olarak, bakış açımdan, @vishy cevabınızı yazdığınızda soruyu zaten cevaplamıştı. Cevabın vishy'den daha az bilgi var, ve vishy'den sonra sen yazdın, bu yüzden hem gereksiz hem de benim için aşağılık görünüyor. Ne olursa olsun büyük bir anlaşma değil. Benim bir oylama, kredinizi önemli bir şekilde etkilemeyecektir. –

0

yana iOS 8.1 UIKit çerçeve UIImageWriteToSavedPhotosAlbum() işlevi vardır.

bu şekilde kullanmak:

UIImageWriteToSavedPhotosAlbum(myImage, self, "image:didFinishSavingWithError:contextInfo:", nil) 

ve sonra kameradan fotoğraf çektiğinizde, o zaman seçici delege görüntüyü kaydedebilirsiniz

func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo:UnsafePointer<Void>) { 
    // check error, report image has been saved, ... 
} 
0

:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info valueForKey:UIImagePickerControllerEditedImage]; 
    [library writeImageToSavedPhotosAlbum:image.CGImage metadata:[info objectForKey:UIImagePickerControllerMediaMetadata] completionBlock:^(NSURL *assetURL, NSError *error) { 
... 
    }]; 



    [picker dismissViewControllerAnimated:YES completion:nil]; 
}