I got a Profile view with a ImageView where a User can change their picture. I'm saving my old & new image to compare them. I would like to know if they're the same, so if they are I dont need to push the new one to my Server.
I tried this but it doesn't really work:
+ (NSData*)returnImageAsData:(UIImage *)anImage {
// Get an NSData representation of our images. We use JPEG for the larger image
// for better compression and PNG for the thumbnail to keep the corner radius transparency
float i_width = 400.0f;
float oldWidth = anImage.size.width;
float scaleFactor = i_width / oldWidth;
float newHeight = anImage.size.height * scaleFactor;
float newWidth = oldWidth * scaleFactor;
UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
[anImage drawInRect:CGRectMake(0, 0, newWidth, newHeight)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImageJPEGRepresentation(newImage, 0.5f);
return imageData;
}
+ (BOOL)image:(UIImage *)image1 isEqualTo:(UIImage *)image2
{
NSData *data1 = [self returnImageAsData:image1];
NSData *data2 = [self returnImageAsData:image2];
return [data1 isEqual:data2];
}
Any idea how to check if two images are same?
End result:
+ (NSData*)returnImageAsData:(UIImage *)anImage {
// Get an NSData representation of our images. We use JPEG for the larger image
// for better compression and PNG for the thumbnail to keep the corner radius transparency
// float i_width = 400.0f;
// float oldWidth = anImage.size.width;
// float scaleFactor = i_width / oldWidth;
//
// float newHeight = anImage.size.height * scaleFactor;
// float newWidth = oldWidth * scaleFactor;
//
// UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
// [anImage drawInRect:CGRectMake(0, 0, newWidth, newHeight)];
// UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// UIGraphicsEndImageContext();
NSData *imageData = UIImageJPEGRepresentation(anImage, 0.5f);
return imageData;
}
+ (BOOL)image:(UIImage *)image1 isEqualTo:(UIImage *)image2
{
CGSize size1 = image1.size;
CGSize size2 = image2.size;
if (CGSizeEqualToSize(size1, size2)) {
return YES;
}
NSData *data1 = UIImagePNGRepresentation(image1);
NSData *data2 = UIImagePNGRepresentation(image2);
return [data1 isEqual:data2];
}