在不同的应用程序中保存相同名称的相同图像,而无需手动输入图像名称((**基于i pad **)

时间:2011-06-27 12:24:05

标签: objective-c xcode ipad properties uiimage

我从照片库中选择一张图像以显示在我的图像视图中。

有一个保存按钮可将此图像文件保存到应用包。

但是我需要将相同的选定图像保存在另一台具有相同名称的设备中(图像相同)。如果用户手动在另一台设备中输入图像名称,则可能会出现图像名称的拼写错误.so它不会保存相同的名称。

我需要避免这个问题。我可以从显示的图像中获取任何唯一的密钥(它将始终与图像相同)。然后我可以将图像的文件名保存为唯一值,而无需为用户输入图像名称的选项。所以另一台设备还会保存与另一个应用程序中保存的唯一名称相同的图像。

可以告诉我一个很好的方法。我需要在不同的应用程序中保存相同名称的相同图像,而无需手动输入图像名称(在i pad上

1 个答案:

答案 0 :(得分:1)

您可以使用图像的哈希值,如MD5或SHA

例如关于MD5哈希的问题:

MD5 algorithm in Objective C

使用上一个链接中的代码进行编辑:

MyExtensions.h

@interface NSData (MyExtensions)
    - (NSString*)md5;
@end

MyExtensions.m

#import "MyExtensions.h"
#import <CommonCrypto/CommonDigest.h> // Need to import for CC_MD5 access

@implementation NSData (MyExtensions)
- (NSString*)md5
{
    unsigned char result[16];
    CC_MD5( self.bytes, self.length, result ); // This is the md5 call
    return [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]
        ];  
}
@end

现在你可以调用这样的代码:

-(NSString *) md5Image:(UIImage *)img {
    return [UIImagePNGRepresentation(img) md5];
}