2017-01-29 17 views
2

Я ищу несколько руководств, когда я создаю пользовательскую камеру. Я использовал квадратную обрезку для фотографий в предыдущих проектах, но теперь мне нужно создать пользовательскую форму обрезки. Должен ли я делать это с помощью пути или маски?Crop Photo with Custom Shape

Мне нужно добавить обрезанное изображение на другое изображение и сгенерировать одно png-изображение с двумя изображениями в сочетании. Пожалуйста, отправьте фотографии, чтобы понять, что я собираюсь построить.

Custom crop shape

ли в настоящее время строит путь Безье, но не знает, как использовать форму пути, чтобы обрезать изображение:

func createBezierPath() -> UIBezierPath { 

    let path = UIBezierPath() 
    path.move(to: CGPoint(x: 2, y: 26)) 

    path.addCurve(to: CGPoint(x: 0, y: 12), // ending point 
     controlPoint1: CGPoint(x: 2, y: 14), 
     controlPoint2: CGPoint(x: 0, y: 14)) 

    path.addLine(to: CGPoint(x: 0, y: 2)) 
    path.addArc(withCenter: CGPoint(x: 2, y: 2), // center point of circle 
     radius: 2, 
     startAngle: CGFloat(M_PI), // π radians = 180 degrees = straight left 
     endAngle: CGFloat(3*M_PI_2), // 3π/2 radians = 270 degrees = straight up 
     clockwise: true) // startAngle to endAngle goes in a clockwise direction 

    path.addLine(to: CGPoint(x: 8, y: 0)) 
    path.addArc(withCenter: CGPoint(x: 8, y: 2), 
       radius: 2, 
       startAngle: CGFloat(3*M_PI_2), // straight up 
     endAngle: CGFloat(0), // 0 radians = straight right 
     clockwise: true) 

    path.addLine(to: CGPoint(x: 10, y: 12)) 
    path.addCurve(to: CGPoint(x: 8, y: 15), // ending point 
     controlPoint1: CGPoint(x: 10, y: 14), 
     controlPoint2: CGPoint(x: 8, y: 14)) 

    path.close() 

    return path 
} 
+0

привет @Paul k. Я должен сделать то же самое в своем приложении (захватив только лицо в соответствии с изображениями выше и сохранить) в объективе c, так что я должен сделать, вы можете дать мне ссылку, если у вас есть какая-либо библиотека для захвата только лица и сохранения, пожалуйста, помогите мне .. заранее заблаговременно –

+0

привет.Сир помогите моему проекту, я пытаюсь получить изображение лица, обрезаю, но не обрезаю идеальную форму лица, пожалуйста, помогите мне объективу c .. –

ответ

1

Положите оригинальную фотографию в UIImageView и сделать:

let mask = CAShapeLayer() 
mask.path = createBezierPath() 
imageView.layer.mask = mask 

И он должен отображать только лицо, обрезанное внутри. Если вы хотите, чтобы новый UIImage использовал метод renderInContext().

+0

Спасибо Алистра! Я попробую это. –

+0

hello @Alistra Я должен сделать то же самое в своем приложении (снимая только лицо в соответствии с приведенными выше изображениями и сохранять) в объективе c, так что мне нужно сделать, вы можете дать мне ссылку, если у вас есть какая-либо библиотека для только захвата и сохраните, пожалуйста, помогите мне .. спасибо заранее –