UIImage, check if contain image

后端 未结 4 898
别那么骄傲
别那么骄傲 2020-12-24 01:51

If I instantiate a UIImage like this :

UIImage *image = [[UIImage alloc] init];

The object is created but it doesn\'t contain any image.

相关标签:
4条回答
  • 2020-12-24 02:26

    This is updated version of @Kreiri, I put in a method and fixed logic error:

    - (BOOL)containsImage:(UIImage*)image {
        BOOL result = NO;
    
        CGImageRef cgref = [image CGImage];
        CIImage *cim = [image CIImage];
    
        if (cim != nil || cgref != NULL) { // contains image
            result = YES;
        }
    
        return result;
    }
    

    An UIImage could only based on CGImageRef or CIImage. If both is nil means there is no image. Example use of giving method:

    if (![self containsImage:imageview.image]) {
        [self setImageWithYourMethod];
    }
    

    hope it will help someone.

    0 讨论(0)
  • 2020-12-24 02:30

    Check with CGImageRef with itself wheather it contains null value means UIImage object not contains image.......

    0 讨论(0)
  • 2020-12-24 02:34

    Check for cgImage or ciImage, in Swift 3

    public extension UIImage {
    
      public var hasContent: Bool {
        return cgImage != nil || ciImage != nil
      }
    }
    

    CGImage: If the UIImage object was initialized using a CIImage object, the value of the property is NULL.

    CIImage: If the UIImage object was initialized using a CGImageRef, the value of the property is nil.

    0 讨论(0)
  • 2020-12-24 02:45

    You can check if it has any image data.

    UIImage* image = [[UIImage alloc] init];
    
    CGImageRef cgref = [image CGImage];
    CIImage *cim = [image CIImage];
    
    if (cim == nil && cgref == NULL)
    {
        NSLog(@"no underlying data");
    }
    [image release];
    

    Swift Version

    let image = UIImage()
    
    let cgref = image.cgImage
    let cim = image.ciImage
    
    if cim == nil && cgref == nil {
        print("no underlying data")
    }
    
    0 讨论(0)
提交回复
热议问题