2009-07-19 13 views
12

मैं UITableView में बहुत बड़ी आकार की छवियां दिखा रहा हूं, क्योंकि मेरा ऐप कुछ समय बाद दुर्घटनाग्रस्त हो रहा है। अब मैं छवि का आकार बदलना चाहता हूं और इसे डिस्क पर सहेजना चाहता हूं। क्या कोई मुझे NSData/UIImage से छवि का आकार बदलने और डिस्क पर सहेजने में सहेजने में मदद कर सकता है।आईफोन में यूआईएममेज से सैंडबॉक्स में छवि सहेजें

मुझे यूआईएममेज से छवि का आकार बदलने के लिए कोड मिला, इसलिए परिणामस्वरूप मैंने यूआईएममेज ऑब्जेक्ट में छवि में अपना आकार बदल दिया है, इसे आईफोन सैंडबॉक्स में कैसे सहेजना है।

धन्यवाद,

उत्तर

4

आप पूछ रहे हैं सही 'कैसे मैं एक फ़ाइल लिख सकता हूँ?

मुझे लगता है कि आप जटिलता का एक स्पर्श है कि आप शायद लाइब्रेरी/कैश निर्देशिका में लिखना चाहते हैं, इसलिए जब फोन का बैक अप लिया जाता है तो आप उन फ़ाइलों को सहेजते नहीं हैं।

ऐप फ़ोल्डर w/NSHomeDirectory() की रूट प्राप्त करें और फिर लाइब्रेरी/कैश संलग्न करें।

आप एनएसडीटा पर एफएस डब्ल्यू/एक विधि में एनएसडीटा लिख ​​सकते हैं। यदि आपके पास UIImage है, तो आप डेटा प्राप्त करने के लिए UIImageJPEGRepresentation() या UIImagePNGRepresentation कर सकते हैं।

+6

आप शायद NSArray * पथ = NSSearchPathForDirectoriesInDomains (NSCachesDirectory, NSUserDomainMask, यस) का उपयोग करना चाहते हैं; एनएसएसटींग * कैश डायरेक्टरी = [पथ ऑब्जेक्टएंड इंडेक्स: 0]; स्वयं 'लाइब्रेरी/कैश' को जोड़ने के बजाय। –

1

NSData *imgData = UIImageJPEGRepresentation(image, 1);

CGImageSourceRef source = CGImageSourceCreateWithData((CFMutableDataRef)imgData, NULL); 
NSDictionary *metadata = [(NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL)autorelease]; 
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"]; 
[imageMutableData writeToFile:jpgPath atomically:YES]; 

यह नाम Test.jpg साथ खिलौने के डिब्बे में दस्तावेजों फ़ोल्डर में अपनी छवि को कॉपी कर देंगे।

आप यहाँ UIImagePNGRepresentation(image);

30

कोशिश कर सकते हैं, तो आप पीएनजी के लिए करना चाहते हैं iOS पर दस्तावेज़ निर्देशिका कोड काम करने से है कि करने के लिए बचाने के लिए कोड है।

// Convert UIImage to JPEG 
NSData *imgData = UIImageJPEGRepresentation(image, 1); // 1 is compression quality 

// Identify the home directory and file name  
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"]; 

// Write the file. Choose YES atomically to enforce an all or none write. Use the NO flag if partially written files are okay which can occur in cases of corruption 
[imgData writeToFile:jpgPath atomically:YES]; 
+0

बहुत बढ़िया जवाब, इससे मेरी मदद मिली। क्या यह डेटा फिर से एक्सेस करने के लिए सरल (कोड की एक पंक्ति) है? या मुझे स्टैक पर एक और सवाल पूछना चाहिए? – KKendall

+1

@KKendall आप केवल '[NSData डेटा WithContentsOfFile:] 'या' [UIImage imageWithContentsOfFile:] ' – Liron

+1

जेपीईजी एक हानिकारक प्रारूप है, इसलिए मैं इसके बजाय UIImagePNGReresentation का उपयोग करने की अनुशंसा करता हूं। यदि आप छवि को बार-बार डिस्क पर लिखते/पढ़ते हैं तो आपके पास गुणवत्ता के मुद्दे होंगे। – user1021430

संबंधित मुद्दे