Подтвердить что ты не робот

UIImage, проверьте, содержат ли изображение

Если я создаю UIImage следующим образом:

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

Объект создан, но он не содержит изображения.

Как я могу проверить, содержит ли мой объект изображение или нет?

4b9b3361

Ответ 1

Вы можете проверить, есть ли у него какие-либо данные изображения.

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

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

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

Ответ 2

Проверьте cgImage или ciImage, в Swift 3

public extension UIImage {

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

CGImage: если объект UIImage был инициализирован с использованием объекта CIImage, значение свойства равно NULL.

CIImage: если объект UIImage был инициализирован с использованием CGImageRef, Значение свойства равно нулю.

Ответ 3

Проверить с CGImageRef с самим собой, если он содержит значение NULL, означает, что объект UIImage не содержит изображения.......

Ответ 4

Это обновленная версия @Kreiri, я применил метод и исправленную логическую ошибку:

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

UIImage может основываться только на CGImageRef или CIImage. Если оба значения равны нулю, изображение отсутствует. Пример использования метода предоставления:

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

надеюсь, что это поможет кому-то.