lifecube
6/12/2012 - 6:29 AM

An NSValueTransformer to convert images to/from serialized PNGs (for CoreData)

An NSValueTransformer to convert images to/from serialized PNGs (for CoreData)

//
//  BPImageTransformer.m
//  Skates
//
//  Created by Jon Olson on 2/3/10.
//  Copyright 2010 Jon Olson. All rights reserved.
//

#import "BPImageTransformer.h"


@interface BPImageTransformer (Private)

@end

@implementation BPImageTransformer

+ (void)registerValueTransformer {
	[NSValueTransformer setValueTransformer:[[[self alloc] init] autorelease] forName:@"BPImageTransformer"];
}

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

+ (BOOL)allowsReverseTransformation 
{
    return YES; 
}

- (id)transformedValue:(id)value 
{
    if (value == nil)
        return nil;

    // I pass in raw data when generating the image, save that directly to the database
    if ([value isKindOfClass:[NSData class]])
        return value;

    return UIImagePNGRepresentation((UIImage *)value);
}

- (id)reverseTransformedValue:(id)value
{
    return [UIImage imageWithData:(NSData *)value];
}

@end
//
//  BPImageTransformer.h
//  Skates
//
//  Created by Jon Olson on 2/3/10.
//  Copyright 2010 Ballistic Pigeon, LLC. All rights reserved.
//

#import <Foundation/Foundation.h>


@interface BPImageTransformer : NSValueTransformer {

}

+ (void)registerValueTransformer;

@end