有没有更快的方法来逐像素比较NSBitmapImageRep对象



我正在尝试加快我不久前编写的一些代码。

使用Xcode中的工具,我发现主要的瓶颈在于这种方法,特别是getPixel调用。

- (BOOL)fasterCompareImage:(NSBitmapImageRep *)imageRepA IdenticalTo:(NSBitmapImageRep *)imageRepB {
    // look for obvious differences ie: width and height differences...
    NSSize imageASize = [imageRepA size];
    NSSize imageBSize = [imageRepB size];
    if( (imageASize.width != imageBSize.width) || (imageASize.height != imageBSize.height) ) {
        return NO;
    }
    // now start looking at each point
    NSUInteger pixelOfA[3];  
    NSUInteger pixelOfB[3];  
    for (int row = 0; row < (imageASize.height); row = row +1) { 
        for(int col = 0; col < (imageASize.width); col = col +1) { 
            [imageRepA getPixel:pixelOfA atX:row y:col];
            [imageRepB getPixel:pixelOfB atX:row y:col];
            if(pixelOfA[1] != pixelOfB[1]) {  
                return NO;
            }
        }
    }
    return YES;
}

基本上,我的方法采用两个NSBitmapImageRep对象,并逐个像素地比较它们以查找差异。

有没有人对代码或不同的方法有任何建议?

Monty,当你像以前那样使用密集循环时,你不应该使用大量的obj-c调用。

NSBitmapImageRep持有CGImage引用。你可以使用CFEqual来比较2个CFStruct,CGImage是。之后,你只需要交叉你的手指,CGImage上的平等是关于像素,香奈儿,位图信息,还有更多......我不知道在概念上什么是相同的两个相同的图像。但是你在这里有很多工具可以做你想做的事。

对不起,如果这实际上不是一个回应,但我给你很大的提示,你应该如何完成你想要的。

相关内容

  • 没有找到相关文章

最新更新