Сегодня для одного из проектов мне нужно было наложить одну картинку на другую с “перемешиванием”. Как показал поиск в google, сделать это не так сложно, как казалось после прочтения официальной документации. Сделать это можно следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//создаем объекты изображений, с которыми будем работать UIImage *lowerImage = [UIImage imageNamed:@"lower.png"]; UIImage *topImage = [UIImage imageNamed:@"top.png"]; //создаем структуру с размерами новой картинки CGSize newSize = CGSizeMake(width, height); //открываем контекст для рисования с заданными размерами UIGraphicsBeginImageContext( newSize ); // рисуем нижнюю картинку в заданном прямоугольнике [lowerImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; // рисуем верхнюю картинку поверх текущего контекста с уже нарисованным на нем предыдущем изображении [topImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:1.0]; //создаем новую картинку на основе текущего контекста UIImage *topImage = UIGraphicsGetImageFromCurrentImageContext(); //закрываем графический контекст UIGraphicsEndImageContext(); |
Пару слов скажу о параметре kCGBlendModeNormal. Он определяет тип смешивания картинок. Normal говорит о том, что обе картинки “смешаются” в равной степени. Другие типы можно посмотреть в официальной документации. Всего определено довольно много видов смешивания двух изображений– вряд ли у вас появится необходимость придумывать и/или реализовывать, свой, особенный метод. :)
Полезная статья? Их будет больше, если вы поддержите меня!