How to convert a UIImage into NSData

- by

You can store a UIImage (or an NSImage on Mac) as raw data. This can be useful if you’d like to save this in Core Data.

Here’s how you convert a UIImage into NSData:

NSData *imageData = UIImagePNGRepresentation(yourImage);

To convert NSData back to a UIImage, you can do this:

UIImage *image = [[UIImage alloc]initWithData:yourData];

The UIImage class is not available on Mac OS X, but its counterpart NSImage is almost identical.


Core Data can convert images to and from data on the fly by using an NSValueTransformer.
Here’s one that works for images:

@implementation PatchBayTransformer

+(BOOL)allowsReverseTransformation {
    return YES;

+(Class)transformedValueClass {
    return [NSData class];

- (id)transformedValue:(id)value {
    // takes the UIImage into data and returns it
    NSData *imageData = UIImagePNGRepresentation(value);
    return imageData;

- (id)reverseTransformedValue:(id)value {
    // takes data and returns it as a UIImage
    UIImage *image = [[UIImage alloc]initWithData:value];
    return image;

If you enjoy my content, please consider supporting me on Ko-fi. In return you can browse this whole site without any pesky ads! More details here.

Leave a Comment!

This site uses Akismet to reduce spam. Learn how your comment data is processed.