2014-11-11 10 views
3

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

- (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') с прозрачной областью вокруг. Но я хочу избежать этой прозрачной области и обрезать изображение результата. Как я могу это достичь? Существует несколько масок, а маски маски не похожи на все. Здесь я прилагаю ссылочный образ обзора проблемы. Пожалуйста, помогите мне, друзья. Заранее спасибо.

enter image description here

ответ

5

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

How do I autocrop a UIImage?

+0

Wow ... !!! Быстрый ответ. Большое спасибо. Он отлично работает. Я обязательно приму ваш ответ. Но SO позволяет мне делать это только через 4 минуты. лол. :) – Thampuran

 Смежные вопросы

  • Нет связанных вопросов^_^