2015-06-16 3 views
2

У меня есть немного расширенный вопрос. Я хочу сделать обычное размытие формы на изображении png, которое является полупрозрачным, а png имеет прозрачные области, а затем рисует штрих вокруг изображения (избегая прозрачного область в png-изображении). Я попытался использовать GPUImage для создания синего изображения, но я блокирован при рисовании штриха вокруг непрозрачной части изображения. Я пробовал использовать этот метод (https://stackoverflow.com/a/15010886/4641980) Но ход полупрозрачный (после того, как изображение непрозрачной части наполовину прозрачно).ios making Masked BlurView с инсультом

Мне нужна ваша помощь, чтобы сделать это. Этот пример почти то, что я имею в виду

http://i.stack.imgur.com/YdITu.png

Я потратил много времени на поиск и пытается, но до сих пор напрасно, я буду очень благодарен за помощь. Спасибо.

+0

Если форма размытого изображения фиксирована, вы можете замаскировать изображение размытия через «CAShapeLayer». «CAShapeLayer» имеет свойство strck. –

+0

, если вы имеете в виду фиксированный путь, как фиксированный прямоугольник или круг, им нечего бояться. его случайный, как форма в ссылке выше. @HarvantS. – Aproram

+0

, который может быть нарисован с помощью CGPath или UIBezierPath (я предпочитаю). Просто используйте ответный код своим путем. Попробуйте один раз, вы можете получить некоторую помощь. Путь может быть статическим, но необычным по форме. –

ответ

0

Вы можете использовать «CAShapeLayer» для клипа (или маскировки) изображения размытия. Для этого вам понадобится CGPath маскирующей (или обрезающей) формы.

CAShapeLayer *pathLayer = [CAShapeLayer layer]; 
pathLayer.frame=CGRectMake(-imageView.frame.origin.x, -imageView.frame.origin.y, imageView.frame.size.width, imageView.frame.size.height); 
pathLayer.path = yourClippingPath.CGPath; 
pathLayer.strokeColor = [[UIColor blackColor] CGColor]; 
pathLayer.fillColor = [[UIColor clearColor] CGColor]; 
pathLayer.lineWidth = 6.0; 
pathLayer.lineJoin = kCALineJoinBevel; 
[imageView.layer addSublayer:pathLayer]; 
+0

Я просто еще одна проблема с отсечением пути. Маска, применяемая как штрих, не обрезающая, что внутри пути, я объяснил проблему здесь, http://stackoverflow.com/q/30938134/4641980 Буду благодарен, если вы можете помогите мне с этим, спасибо @ Харвант С. – Aproram