iOS UIImage对象的MD5值

512 阅读1分钟
+ (NSString *)imageMD5:(UIImage *)image {
    if (!image) {
        return nil;
    }
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
    CC_MD5([imageData bytes], [imageData length], result);
    NSString *imageHash = [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",                           result[0], result[1], result[2], result[3],
                           result[4], result[5], result[6], result[7],
                           result[8], result[9], result[10], result[11],
                           result[12], result[13], result[14], result[15]];
    return imageHash;
}

注意:网上挺多把CC_MD5_DIGEST_LENGTH直接写成16的,这种做法是错误的,直接用16会导致图片每次取到的MD5值都会改变。