2011-03-10 3 views
5

पर छवियों को संग्रहीत करना क्या कैमरे द्वारा आईफोन पर कैप्चर की गई छवियों को कस्टम निर्देशिका में या कहीं भी कैमरे रोल को सहेजने के बजाय आईफोन पर सहेजना संभव है?आईफोन

मैं छवियों को डिवाइस पर सहेजना चाहता हूं और उसके बाद एलासेट्स का उपयोग कर कैमरा रोल से पढ़ने के बजाय बाद के चरण तक पहुंच प्राप्त करना चाहता हूं।

क्या यह संभव है?

+0

@ जो: धन्यवाद: पी – jarryd

उत्तर

5

हाँ आप उन्हें अपने ऐप्स के दस्तावेज़ फ़ोल्डर में सहेज सकते हैं।

// Create path 
NSString *imagePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/ImageName.png"]; 

// Write image to PNG 
[UIImagePNGRepresentation(image) writeToFile:imagePath atomically:YES]; 

इसे पुनः प्राप्त करने के लिए::

UIImage *image = [UIImage imageWithContentsOfFile:imagePath]; 

एक निर्देशिका में सभी फ़ाइलों को सूचीबद्ध करने के लिए:

NSFileManager *manager = [NSFileManager defaultManager]; 
NSArray *fileList = [manager directoryContentsAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]]; 
for (NSString *s in fileList){ 
    NSLog(s); 
} 
+0

धन्यवाद। मैं छवियों के प्रबंधन के बारे में सोच रहा था। एक बार फ़ोल्डर में सहेजे जाने के बाद संग्रहीत छवि के लिए यूआरएल कैसे प्राप्त होता है? – jarryd

+0

@ हेलियम 3 मैंने पीएनजी के रूप में सहेजने के नमूने के साथ अपना जवाब अपडेट किया है (हालांकि jpgs के लिए एक समान 'UIImageJPEGRepresentation' विधि है), सहेजी गई छवि को कैसे पुनर्प्राप्त करें, और निर्देशिका की सामग्री को कैसे सूचीबद्ध करें। – theChrisKent

+0

धन्यवाद। अगर छवि का कोई नाम नहीं है तो क्या होगा? क्या छवि को डिवाइस पर सहेजने और यूआरएल प्राप्त करने का कोई तरीका है ताकि यूआरएल छवि के बाद के कॉलबैक के लिए संग्रहीत किया जा सके? या कैमरे द्वारा कैप्चर की गई प्रत्येक छवि के लिए नाम गतिशील रूप से बनाए जाने चाहिए? – jarryd

1

उपयोग इस

// imageData = NSData object 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docsPath = [paths objectAtIndex:0]; 
NSString *imageCacheDirPath = [docsPath stringByAppendingPathComponent:@"anyFolderName"]; 
NSString *imageCachePath = [imageCacheDirPath stringByAppendingPathComponent:@"image.jpg"]; 
[imageData writeToFile:imageCachePath atomically:YES]; 

लिखने और करने के लिए यहाँ एक उदाहरण है डेटा को फिर से पढ़ने के लिए निम्न स्निपेट:

// Get path of image 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docsPath = [paths objectAtIndex:0]; 
NSString *imageCacheDirPath = [docsPath stringByAppendingPathComponent:@"anyFolderName"]; 
NSString *imageCachePath = [imageCacheDirPath stringByAppendingPathComponent:@"image.jpg"]; 
NSData *imageData = [NSData dataWithContentsOfFile:imageCachePath]; 

ध्यान दें कि इस उदाहरण में छवि अपने "दस्तावेज़" फ़ोल्डर का एक सबफ़ोल्डर में संग्रहीत किया जाता है और इस फ़ोल्डर "anyFolderName" कहा जाता है। वेरिएबल डॉक्सपैथ में आपके डीआईआर के "दस्तावेज़" फ़ोल्डर का पथ होता है।

ध्यान दें कि यह केवल कोड है जिसका उपयोग मैं आईओएस 3.0 बार से करता हूं, आपके ऐप के दस्तावेज़ फ़ोल्डर में छवि को स्टोर करने के बेहतर तरीके हो सकते हैं।

+0

आईफोन में 1000 छवियों को सहेजने से कोई समस्या आएगी? मेमोरी मैंगमेंट मुद्दों की तरह? –