web-dev-qa-db-fra.com

UIImage, vérifie si contient l'image

Si j'instancie un UIImage comme ceci:

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

L'objet est créé mais il ne contient aucune image.

Comment puis-je vérifier si mon objet contient une image ou non?

30
Jonathan

Vous pouvez vérifier s'il contient des données d'image. 

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

CGImageRef cgref = [image CGImage];
CIImage *cim = [image CIImage];

if (cim == nil && cgref == NULL)
{
    NSLog(@"no underlying data");
}
[image release];
67
Kreiri

Vérifiez cgImage ou ciImage dans Swift 3

public extension UIImage {

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

CGImage: Si l'objet UIImage a été initialisé à l'aide d'un objet CIImage, la valeur de la propriété est NULL.

CIImage: si l'objet UIImage a été initialisé à l'aide d'un CGImageRef, le fichier la valeur de la propriété est nulle.

10
onmyway133

Ceci est la version mise à jour de @Kreiri, j'ai mis une erreur de méthode et de logique fixe:

- (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;
}

Un UIImage ne pourrait être basé que sur CGImageRef ou CIImage. Si les deux sont nuls, cela signifie qu'il n'y a pas d'image. Exemple d'utilisation de la méthode des dons:

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

espérons que cela aidera quelqu'un.

0
mgyky

Vérifier avec CGImageRef avec lui-même s’il contient une valeur nulle signifie que l’objet UIImage ne contient pas d’image ...

0