How to serialize UIImage to JSON?

前端 未结 3 2121
北荒
北荒 2021-02-06 07:45

I am using

imageData = UIImagePNGRepresentation(imgvw.image);

and while posting

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


        
相关标签:
3条回答
  • 2021-02-06 07:55

    Try this

    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];
    
    0 讨论(0)
  • 2021-02-06 08:04

    you can Convert Your image in ti NSData like:-

    if PNG image

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

    if JPG image

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

    and you can store it in to CoreData may be like this way is usefull for you:-

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

    You can load like :-

     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;
    
    0 讨论(0)
  • 2021-02-06 08:12

    You need to convert your UIImage to NSData and then convert that NSData to a NSString which will be base64 string representation of your data.

    Once you get the NSString* from NSData*, you can add it to your dictionary at key @"image"

    To convert NSData to a base64 type NSString* refer to the following link: How do I do base64 encoding on iphone-sdk?

    In a more pseudo-way the process will look like this

    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 讨论(0)
提交回复
热议问题