2013-01-23 23 views
12

मिलता है, मैं UIImagePickerController का उपयोग एक तस्वीर गोली मार और कैमरा रोल में संग्रहीत करना:कैमरा रोल में छवि बचाने के लिए और किसी ऐप मैं विकासशील हूँ के लिए संपत्ति यूआरएल

- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info { 
//... some stuff ... 

     UIImageWriteToSavedPhotosAlbum([info objectForKey:@"UIImagePickerControllerOriginalImage"], nil, nil, nil); 

} 

छवि सहेजा जाता है, अब मैं करने की जरूरत है इसका संदर्भ यूआरएल प्राप्त करें, इसलिए मैं कैमरे के रोल को गिनने की कोशिश करता हूं और आखिरी छवि प्राप्त करता हूं, लेकिन मुझे हमेशा एक शॉट से पहले छवि मिलती है।

किसी को भी पता है कि सिर्फ सहेजी गई तस्वीर का संदर्भ कैसे प्राप्त करें?

धन्यवाद, मैक्स

उत्तर

12

यह समाधान समस्या को ठीक करना चाहिए:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
    [library writeImageToSavedPhotosAlbum:((UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage]).CGImage 
           metadata:[info objectForKey:UIImagePickerControllerMediaMetadata] 
          completionBlock:^(NSURL *assetURL, NSError *error) { 
           NSLog(@"assetURL %@", assetURL); 
          }]; 

एट देखा:

assetURL assets-library://asset/asset.JPG?id=1611E84C-24E2-4177-B49A-1C57B4A9C665&ext=JPG 
+0

तुम मुझे कैसे आप कैमरा रोल में छवि को बचाने पर कुछ अधिक बता सकते हैं ? मैं छवि को सहेज सकता हूं लेकिन संपत्ति यूआरएल "शून्य" – Sabarish

+0

देता है आपको पूर्णता ब्लॉक बदलना होगा। मैं समापन ब्लॉक के ऊपर का उदाहरण बस propertyURL को लॉग करता हूं, यह कुछ ऐसा होना चाहिए: ALAssetsLibrary * al = [addPhoto defaultAssetsLibrary]; [al propertyForURL: assetsURL परिणामब्लॉक: परिणामब्लॉक विफलताब्लॉक: विफलता ब्लॉक]; जहां डिफ़ॉल्ट एसेट्स लाइब्रेरी है: + (एलासेट्स लाइब्रेरी *) डिफ़ॉल्ट एसेट्स लाइब्रेरी { स्थिर dispatch_once_t pred = 0; स्थैतिक अलास्सेट लाइब्रेरी * पुस्तकालय = शून्य; dispatch_once (& pred,^{ लाइब्रेरी = [[अलास्सेट्स लाइब्रेरी alloc] init]; }); वापसी पुस्तकालय; } – masgar