Смешивание UIImages в реальном времени

Возможно ли смешивание в реальном времени, как стрелка в центре уведомлений на iOS 7? Интересно, возможно ли смешать UIImage с мягким светом с содержимым (UIView или CALayer) прямо под ним, чтобы фоновое изображение могло двигаться, а смешанное изображение оставалось на одном месте.

Я хочу, чтобы это было место, где вы можете иметь UIImage, где вы можете установить для свойства blendMode любой режим наложения, который вам нужен, например, imageView.blendMode = kCGBlendModeSoftLight;

Я попытался использовать GPUImage, но не смог понять, как сделать то, что мне нужно. Любая помощь будет оценена по достоинству.

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

    //blur the background
    GPUImageGaussianBlurFilter *blurFilter = [[GPUImageGaussianBlurFilter alloc] init];
    blurFilter.blurRadiusInPixels = 50.0f;
    blurFilter.blurPasses = 4;
    UIImage *blurredBackground = [blurFilter imageByFilteringImage:[UIImage imageNamed:@"Background.png"]];

    //make the blended images
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 2.0f);
    CGContextSetInterpolationQuality(UIGraphicsGetCurrentContext(), kCGInterpolationHigh);
    [blurredBackground drawInRect:self.view.bounds blendMode:kCGBlendModeNormal alpha:1.0];

    [[UIImage imageNamed:@"BarLineImage.png"] drawInRect:CGRectMake(0, self.view.bounds.size.height - 31, self.view.bounds.size.width, 1) blendMode:kCGBlendModeSoftLight alpha:1.0];

    [[UIImage imageNamed:@"Equalizer-th.png"] drawInRect:CGRectMake(65, self.view.bounds.size.height - 30, 30, 30) blendMode:kCGBlendModeSoftLight alpha:1.0];
    [[UIImage imageNamed:@"Player-th.png"] drawInRect:CGRectMake(145, self.view.bounds.size.height - 30, 30, 30) blendMode:kCGBlendModeSoftLight alpha:1.0];
    [[UIImage imageNamed:@"Container-th.png"] drawInRect:CGRectMake(225, self.view.bounds.size.height - 30, 30, 30) blendMode:kCGBlendModeSoftLight alpha:1.0];

    UIImage *blendedImages = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

Вот скриншот того, что делает этот код для наглядности.Screenshot

Это выглядит так, как мне нужно, но я не могу анимировать содержимое под изображениями внизу. Мне действительно нужно иметь возможность смешивания в реальном времени для UIImages и UIViews.


person maxned    schedule 26.10.2013    source источник
comment
Можете ли вы объяснить немного больше о том, как перемещается фоновый вид? Вы ищете размытие прямой видеотрансляции или просто то, что было на вашем экране, когда размытие вступило в силу?   -  person ryan cumley    schedule 28.10.2013
comment
Я ищу смесь живого видеопотока.   -  person maxned    schedule 29.10.2013
comment
Думаю, я понимаю, к чему вы стремитесь, и это интересная идея! Размыть живое видео для всего фона достаточно просто, просто переключите UIImage, который вы в настоящее время размываете, на GPUImageVideoCamera, который нацелен на фильтр размытия, который нацелен на GPUImageView, как и в примерах проектов. Но ваша идея совместить элементы управления с основным видео звучит привлекательно. У меня есть идея, как это сделать с помощью разветвленной цепочки и обрезки. Я поиграю с ним сегодня вечером и посмотрю, смогу ли я заставить его работать. Я дам вам знать, что я придумал!   -  person ryan cumley    schedule 29.10.2013
comment
Разве GPUImageVideoCamera не предназначена только для живого видео? Фон не является реальным видео, поэтому мне интересно, как это может работать.   -  person maxned    schedule 30.10.2013


Ответы (1)


Проверьте видео номер 226 из сеанса WWDC. Вы можете найти много информации о том, как анимировать, смешивать изображения с помощью нового iOS 7 API.

Я понимаю, что мой ответ неполный, и это должен быть комментарий к вопросу, но моя репутация слишком низкая.

редактирование: сессия WWDC 2013, видео № 226: Реализация привлекательного пользовательского интерфейса на iOS

person dzana_dj    schedule 30.10.2013
comment
Было бы полезно добавить название видео и описание сеанса, особенно если ссылка когда-либо не работает. - person David Brossard; 30.10.2013
comment
В видео не рассказывается о режимах наложения и не приводятся примеры того, как добиться живого размытия или смешивания. - person maxned; 31.10.2013