내가하려는 것은 정사각형 이미지 뷰를 사용하여 3 포인트 삼각형 모양의 3 점 삼각형 모양의 꼭지점과 하단 점을 만듭니다. 기초.이미지 모양을 도형으로 변환하고 확대하는 방법 (swift3)
public func shapeImage(with bezierPath: UIBezierPath, size: CGSize, fillColor: UIColor? = UIColor.clear,
strokeColor: UIColor? = nil, strokeWidth: CGFloat = 0.0) -> UIImage! {
UIGraphicsBeginImageContext(size)
let context = UIGraphicsGetCurrentContext()
var image = UIImage(data: try! Data(contentsOf: URL(string:"https://a248.e.akamai.net/secure.meetupstatic.com/photos/member/5/3/5/e/highres_260901342.jpeg")!))!
if let context = context {
context.saveGState()
context.addPath(bezierPath.cgPath)
if let strokeColor = strokeColor {
strokeColor.setStroke()
context.setLineWidth(strokeWidth)
} else {
UIColor.clear.setStroke()
}
fillColor?.setFill()
context.drawPath(using: .fillStroke)
image = UIGraphicsGetImageFromCurrentImageContext()!
context.restoreGState()
UIGraphicsEndImageContext()
}
return image
}
나는 정상을하고 더 큰하고 아래쪽에 동일한 크기를 유지하려는. 원본 이미지의 일부분을 가면이나 자르고 싶지 않습니다. 스트레칭을하고 마스킹하지 않고 이미지를 더 크게 만들고 싶습니다. 이 사이트에서이 작업을 수행하는 방법이나 사용 가능 여부를 설명하는 항목을 본 적이 없습니다.
"녹색"부분이 이미지라고 가정하고 그렇지 않은 경우에도 일종의 마스킹 없이는 가능하지 않을 수 있습니다. 4 점 사변형에서 5 점 육면체 (sic?)로 이동하면 거의 마스킹 또는 자르기가 포함되어야합니다. 당신이하려는 일에 더 많은 세부 사항을 추가 할 수있는 기회가 있습니까? 지금 당장은 CIPerspectiveCorrection을 사용하는 것이 가장 좋습니다.하지만 4 포인트 사변형을 사용합니다. (세부 사항에서 도형을 다이빙해야 할 수도 있습니다.) 마스킹이 사용되는 경우 – dfd
은 상관하지 않습니다. 나는 단지 이미지의 어떤 부분을 잘라 내고 싶지 않다. –
생각을 끝내면 원근감 교정이 도움이되지 않습니다. 단일 점을 드래그하여 이미지를 "늘리는"방법이 필요합니다. 확신 할 수 있겠지만, 픽셀 수준에서 GLSL (OpenGL Scripting Language)이 필요할 수도 있습니다. 나는 그것을 코딩하지만 그 특별한 것은하지 않습니다. 만약 당신이 그것을 알고 있다면, 아마도 "왜곡"을위한 주변 픽셀을 알아야하기 때문에 CI 워프 커널이라고 불리는 것을 필요로 할 것입니다. 내가 더 많은 것을 도울 수 있기를 바란다. (그리고 나에게 앱 아이디어를 주었다)! 다른 사람들이 나보다 훨씬 더 나은 대답을 원하기를 바랍니다. – dfd