Objective C:检查UIImage是否填充了单一颜色

3

有没有办法检查UIImage是否只包含单一颜色?我有一个渲染文本到图像的应用程序,如果返回的图像完全是白色的,我就不想重新绘制屏幕。

有什么方法可以实现这个功能吗?

谢谢, EZFrag

1个回答

9

类似这样的东西可能会起作用

- (BOOL)imageIsWhite:(UIImage *)img {
  CGImageRef imageRef = img.CGImage;
  NSData *data = (NSData *) CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
  unsigned char *pixels = (unsigned char *)[data bytes];
  BOOL isWhite = YES;

  for(int i = 0; i < [data length]; i += 4) {
    if (!(pixels[i] == pixels[i+1] == pixels[i+2] == 255)) {
      isWhite = NO;
      break;
    }
  }
  return isWhite;
}

还有其他解决方案吗?在我看来,如果像这样检查每个像素,那么代价非常昂贵。 - Nam Vu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接