Search code examples
objective-ccocoa-touchuiimageviewuiimagensdata

Converting image to NSData & back is nil


When I do

UIImage *photo = [UIImage imageNamed:@"sample_thumbnail.png"];
self.thumbnail.image = photo;

I see the thumbnail, which is a PNG, fine. When I convert to NSData & back by doing:

UIImage *photo = [UIImage imageNamed:@"sample_thumbnail.png"];
NSData *data = UIImagePNGRepresentation(photo);
self.photoData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
self.thumbnail.image = [UIImage imageWithData:[self.photoData dataUsingEncoding:NSUTF8StringEncoding]];

self.photoData is nil.

Why is this happening?


Solution

  • I think the problem is with the way you create your image back from NSData instance. Give it a try to this one instead:

    UIImage *photo = [UIImage imageNamed:@"sample_thumbnail.png"];
    NSData *data = UIImagePNGRepresentation(photo);
    UIImage *image = [UIImage imageWithData:data];
    

    __UPDATE__

    below is an excerpt from this post

    - (NSString *)imageToNSString:(UIImage *)image
    {
        NSData *imageData = UIImagePNGRepresentation(image);
    
        return [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    }
    
    - (UIImage *)stringToUIImage:(NSString *)string
    {
        NSData *data = [[NSData alloc]initWithBase64EncodedString:string
                                                      options:NSDataBase64DecodingIgnoreUnknownCharacters];
    
        return [UIImage imageWithData:data];
    }