【问题标题】:IOS Comparing UIImage Data [duplicate]IOS比较UIImage数据[重复]
【发布时间】:2013-05-31 20:15:42
【问题描述】:

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

这就是我所拥有的:

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

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

【问题讨论】:

  • 为什么不在IB中的UIImageViewnil中制作图片,然后当你的viewWillAppear:方法被调用时,检查UIImageView.image属性是否为nil,如果是,添加占位符图片,如果不是nil,则知道是用户添加的图像。
  • 有趣的方式,我会尝试看看它是否有效(不明白为什么它不会)并回复你@msgambel

标签: ios uiimage nsdata


【解决方案1】:

试试这个

    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

【讨论】:

    【解决方案2】:

    我想用户不会在每次启动应用程序时都添加这张图片。我根本看不到问题所在。只需为此使用一些属性,在加载用户图片后处理它并将其保存到 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      相关资源
      最近更新 更多