2012-05-21 10 views
9

मैं अपने UIImage हेरफेर के साथ एक अजीब मुद्दे में चल रहा हूँ।iPhone आईओएस बचत डेटा UIImageJPEGRepresentation() से प्राप्त विफल रहता है दूसरी बार: ImageIO: CGImageRead_mapData 'खुला' में विफल रहा है

मैं एक ड्रॉपबॉक्स सिंक कर रहा हूं, और अपनी छवियों को स्थानीय फाइलों के रूप में स्टोर करना है। उपयोगकर्ता एक छवि का चयन करता है या छवि एक imageView छवि को देखने के UIImage विधि का उपयोग कर एक फाइल करने के लिए सहेजा जाता है को सौंप दिया जाता है एक तस्वीर लेता है: ऐसा करने के लिए, मैं उन्हें UIImagePNGRepresentation(image) या UIImageJPEGRepresentation(image, 0.66)

यहाँ मेरी ठेठ कार्यप्रवाह का उपयोग कर बचाने के लिए

अगली बार एप्लिकेशन को उपयोगकर्ता फिर से खुल जाता है पर क्लिक करके मेरे

[UIImage imageWithContentsOfFile:fullImagePath] 

का उपयोग कर फ़ाइल यह एक बार काम करता है से वापस छवि पढ़ें।

दूसरी बार जब मैं दिनचर्या के माध्यम से चलता हूं, तो मुझे छवि को एक बार फिर से सहेजने की कोशिश करते समय नीचे सूचीबद्ध त्रुटि संदेश मिलता है।

//saving the image 
NSData* data = isPNG?UIImagePNGRepresentation(image):UIImageJPEGRepresentation(image, 0.66); 
BOOL success = [data writeToFile:filepath atomically:YES]; 
if(!success) 
{ 
    DLog(@"failed to write to file: %@",filepath); 
} 


//loading the image 
[UIImage imageWithContentsOfFile:fullImagePath] 

मैं जब मैं एक छवि है कि पहले JPEG या PNG

2012-05-21 08:16:06.680 file already exists: NO 
ImageIO: CGImageRead_mapData 'open' failed '/var/mobile/Applications/C1312BF8-C648-4397-82F3-D93E4FAAD35F/Documents/imageData/LogoImage.jpg' 
error = 2 (No such file or directory) 
May 21 08:16:06 <Error>: ImageIO: JPEG Not a JPEG file: starts with 0xff 0xd9 
May 21 08:16:06 <Error>: ImageIO: JPEG Application transferred too few scanlines 

यह मेरे लिए प्रकट होता है में बदल दिया गया है कि इस त्रुटि मुझे के कारण हो रहा है फिर से बचाने की कोशिश इस त्रुटि हो रही है एक बार फिर से जेपीईजी के रूप में छवि को फिर से सहेजने की कोशिश कर रहा है। अगर मैं संदर्भ में खुद को प्रस्तुत करने के लिए दृश्य से पूछता हूं (प्रभावी रूप से एक नई छवि बना रहा हूं), तो त्रुटि नहीं होती है।

क्या कोई जानता है कि मैं क्या गलत कर रहा हूं? क्या मुझे यूआईएममेज को डेटा में बदलने, इसे पुनः लोड करने और इसे उपयोगकर्ता को प्रदर्शित करने के बाद इसे एक बार फिर से बदलने की कोशिश करके किसी प्रकार का मेटाडेटा याद आ रहा है?

+0

मुझे लगता है कि समस्या आप जेपीजी प्रारूप के साथ डेटा सहेज रहे हैं और पीएनजी प्रारूप का उपयोग कर रहे हैं यानी एक बार जेपीईजी छवि डेटा सहेजा गया है, जब पीएनजी प्रतिनिधित्व समस्या के एनएसडीएटी तक पहुंचने वाली छविदृश्य –

+0

हो सकता है: http://stackoverflow.com/ प्रश्न/5081297/ios-uiimagejpegrepresentation-error-not-a-jpeg-file-start-with-0xff-0xd9 –

उत्तर

28

मैंने पहले कुछ इसी तरह आई है। ऐसा लगता है कि imageWithContentsOfFile ने फ़ाइल को तब तक खुला रखा जब तक कि UIImage इसे अभी भी जीवित बनाने के लिए उपयोग किया गया था। उस समय, मुझे फ़ाइल को NSData में पढ़ने और फिर फ़ाइल के बजाय NSData से UIImage बनाकर समस्या को हल कर लिया गया था।

+8

आप और आपके बच्चों के बच्चे अनंत काल के लिए भयानक होंगे! HJManagedImageV का उपयोग करके, यह एचजेसीएच की खुली लाइब्रेरी के साथ हुआ। मैं इसे लिख रहा हूं, इसलिए खोज इंजन कनेक्शन पर उठाते हैं। धन्यवाद! –

+0

पवित्र बकवास, आपने मुझे कई घंटों के काम को बचाया। आप का ऋणी हूं। – jpm

+0

आपको बहुत बहुत धन्यवाद !!! मैंने एक दिन का सबसे अच्छा हिस्सा बिताया है, एक डरावनी छवि को बचाने/लोड करने के लिए NSFileManager प्राप्त करने का प्रयास कर रहा है !!! अंत में आपके उत्तर के साथ, यह काम करता है, धन्यवाद फिर से :) – Supertecnoboff

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