Как удалить прозрачную область UIImageView после маскировки?

В одном из моих приложений для iOS я пытаюсь вырезать часть изображения, используя CGImageMask, Мне удалось замаскировать изображение с помощью следующего кода:

- (UIImage *)maskImage:(UIImage *)referenceImage withMask:(UIImage *)maskImage {

    CGImageRef maskRef = maskImage.CGImage;

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                        CGImageGetHeight(maskRef),
                                        CGImageGetBitsPerComponent(maskRef),
                                        CGImageGetBitsPerPixel(maskRef),
                                        CGImageGetBytesPerRow(maskRef),
                                        CGImageGetDataProvider(maskRef), NULL, false);

    CGImageRef masked = CGImageCreateWithMask([referenceImage CGImage], mask);
    return [UIImage imageWithCGImage:masked];
}

Итак, мое изображение будет:

myImageView.image = [self maskImage:[UIImage imageNamed:@"image.png"] 
                           withMask:[UIImage imageNamed:@"mask.png"]];

Проблема: выходное изображение имеет тот же размер, что и эталонное изображение ('image.png') с прозрачной областью вокруг. Но я хочу избежать этой прозрачной области и обрезать полученное изображение. Как мне этого добиться? Существует несколько масок, и рамки масок не одинаковы для всех. Я прилагаю справочное изображение обзора проблемы здесь. Пожалуйста, помогите мне, друзья. Заранее спасибо.

1 ответ

Решение

Посмотрите автообрезку UIImage. Это должно вырезать что-нибудь прозрачное.

Как я могу автоматически обрезать UIImage?

Другие вопросы по тегам