IOS比较UIImage数据

时间:2013-05-31 20:15:42

标签: ios uiimage nsdata

我有一个UIImageView,可以为用户提供封面照片。通过xcode IDE,我添加了一个占位符图像作为股票封面照片。当用户点击封面照片时,我需要一种方法来判断UIImageView中的图像是库存封面照片还是用户添加的其他照片。图像永远不会是零。目前,我正在通过将当前封面照片的图像数据与生成的图像数据进行比较来购买。从封面照片图像文件创建图像。

这就是我所拥有的:

if ([UIImagePNGRepresentation(_coverPhoto.image) isEqualToData:UIImagePNGRepresentation([UIImage imageNamed:@"stockCoverPhoto.png"])])
{
    [self loadPhoto:1];
}

比较_coverPhoto.image与UIImage imageNamed:@" stockCoverPhoto.png"应用程序关闭并在同一会话中重新打开时产生错误结果。必须有更好的方法来实现这一点,我需要尽可能高效地编写代码,并且将两个NSData结构相互比较似乎是不必要的。

2 个答案:

答案 0 :(得分:2)

试试这个

    UIImage *img = [UIImage imageNamed:@"some.png"];
    UIImage *img1 = [UIImage imageNamed:@"some1.png"];

    NSData *dataObj1 = UIImagePNGRepresentation(img);
    NSData *dataObj2 = UIImagePNGRepresentation(img2);

    BOOL test = [dataObj1 isEqualToData:dataObj2];

     if(test) 
         //is Equal

   and other answer is

NSData compare to NSData in percents
NSData isEqualtoData

答案 1 :(得分:0)

我想用户每次启动应用程序时都不会添加此图片。我根本没有看到这个问题。只需使用一些属性,在加载用户图片后处理它并将其保存到NSUSerDefaults,云或某处......

// your class interface
@property (nonatomic) BOOL isUserPictureLoaded;
// first time run save isUserPictureLoaded = NO to NSUserDefaults
// if user saves own picture, set isUserPictureLoaded = YES and save to NSUserDefaults