2013-08-19 6 views
7

मैंJSII को UIImage को क्रमबद्ध करने के लिए कैसे?

imageData = UIImagePNGRepresentation(imgvw.image);

उपयोग कर रहा हूँ और पोस्ट करते समय

[dic setObject:imagedata forKey:@"image"]; 

NSData *data = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&theError];

अब एप्लिकेशन समाप्त ऐप्स क्रैश हो, कारण न आया हुआ अपवाद 'NSInvalidArgumentException' के कारण के बाद: 'जेएसओएन लिखने में अमान्य प्रकार (एनएससीओनक्यूट्यूब leData)

+2

तरह दिखेगा में यहाँ एक नजर डालें -> http://www.json.org/ ऐसा लगता है आप JSON के बारे में अधिक जानने के लिए इससे पहले कि आप उपयोग करने का प्रयास की जरूरत है यह। इस पृष्ठ पर मुख्य अनुभाग ** मान ** अनुभाग है। JSON मानक में अनुमत मानों के प्रकार पर नज़र डालें। – borrrden

+0

आप इमेजेटेट में क्या सेट कर रहे हैं? –

+0

मुझे यकीन है कि आप गलत शब्दकोश का उपयोग कर रहे हैं। आपने शब्दकोश आवंटित किया है और यहां इमेजेट क्या है? –

उत्तर

11

आपको लगता है कि NSData एक को NSData करने के लिए अपने UIImage कन्वर्ट और फिर बदलने की आवश्यकता का प्रयास करें एनएसएसटींग जो आपके डेटा का आधार 64 स्ट्रिंग प्रतिनिधित्व होगा।

एक बार जब आप NSData * से NSString * मिलता है, आप इसे अपने शब्दकोश की कुंजी @ "छवि"

एक बेस 64 प्रकार NSString करने के लिए NSData परिवर्तित करने के लिए जोड़ सकते हैं * नीचे दिए गए लिंक का संदर्भ लें: How do I do base64 encoding on iphone-sdk?

एक और अधिक छद्म रास्ता प्रक्रिया इस

UIImage *my_image; //your image handle 
NSData *data_of_my_image = UIImagePNGRepresentation(my_image); 
NSString *base64StringOf_my_image = [data_of_my_image convertToBase64String]; 

//now you can add it to your dictionary 
NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 
[dict setObject:base64StringOf_my_image forKey:@"image"]; 

if ([NSJSONSerialization isValidJSONObject:dict]) //perform a check 
{ 
     NSLog(@"valid object for JSON"); 
     NSError *error = nil; 
     NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error]; 


     if (error!=nil) { 
      NSLog(@"Error creating JSON Data = %@",error); 
     } 
     else{ 
      NSLog(@"JSON Data created successfully."); 
     } 
} 
else{ 
     NSLog(@"not a valid object for JSON"); 
    } 
+0

धन्यवाद यह आपके काम कर रहा है ... – user2181966

+0

यह जानना अच्छा लगा .. – CodenameLambda1

-3

आप ti NSData में आपकी छवि में कनवर्ट कर सकते हैं जैसे: -

यदि PNG छवि

UIImage *image = [UIImage imageNamed:@"imageName.png"]; 
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)]; 

अगर JPG छवि

UIImage *image = [UIImage imageNamed:@"imageName.jpg"]; 
NSData *imageData = UIImageJPEGRepresentation(image, 1.0); 

और आप स्टोर कर सकते हैं कोरडाटा में यह आपके लिए उपयोगी हो सकता है: -

[newManagedObject setValue:imageData forKey:@"image"]; 

आप लोड कर सकते हैं जैसे: -

NSManagedObject *selectedObject = [[self yourFetchCOntroller] objectAtIndexPath:indexPath]; 
     UIImage *image = [UIImage imageWithData:[selectedObject valueForKey:@"image"]]; 
// and set this image in to your image View 
    yourimageView.image=image; 
+3

प्रश्न शीर्षक भ्रामक है। सवाल यह था कि जेएसओएन के माध्यम से एक छवि कैसे भेजनी है। मुझे नहीं लगता कि कोर डेटा में छवि को कैसे सहेजना है यहां मदद करता है। –

4

इस

NSData *imageData = [UIImageJPEGRepresentation(self.photoImageView.image, compression) dataUsingEncoding:NSUTF8StringEncoding]; 

const unsigned char *bytes = [imageData bytes]; 
NSUInteger length = [imageData length]; 
NSMutableArray *byteArray = [NSMutableArray array]; 
for (NSUInteger i = 0; i length; i++) 
{ 
    [byteArray addObject:[NSNumber numberWithUnsignedChar:bytes[i]]]; 
} 

NSDictionary *dictJson = [NSDictionary dictionaryWithObjectsAndKeys: 
       byteArray, @"photo", 
       nil]; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictJson options:0 error:NULL]; 
संबंधित मुद्दे