2016-09-12 3 views
1

Swift에서 여러 UIBezierPaths 배열로 UIImage를 만들고 싶습니다.Swift에서 Uibezierpath Array에서 UIImage 만들기

func convertPathsToImage(paths: [UIBezierPath]) -> UIImage{ 

    let imageWidth: CGFloat = 200 
    let imageHeight: CGFloat = 200 

    let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceRGB()! 
    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedLast.rawValue) 
    let context = CGBitmapContextCreate(nil, Int(imageWidth), Int(imageHeight), 8, 0, colorSpace, bitmapInfo.rawValue) 

    CGContextBeginPath(context); 

    UIColor.blackColor().set() 

    for path in paths{ 
     path.stroke() 
    } 

    let newImageRef = CGBitmapContextCreateImage(context); 
    let newImage = UIImage(CGImage: newImageRef!) 

    return newImage 

    } 

4. 결과 빈 이미지 :

나는 다음 코드를 시도했다.

누군가 내가 뭘 잘못하고 있는지 설명 할 수 있습니까? 고마워요!

+0

이러한 경로를보기의 레이어에 추가하고 있습니까? – EridB

+0

@EridB 아니요.보기 레이어에 추가하고 싶지 않습니다. –

+0

'[UIBezierPath]'배열의 구체적인 예를 붙일 수 있습니까? –

답변

1

내가 뭘 잘못하고 있는지 말할 수는 없지만 비슷한 문제가 있으며이 코드는 저에게 효과적입니다.

func convertPathsToImage(paths: [UIBezierPath]) -> UIImage 
{ 
    let imageWidth: CGFloat = 200 
    let imageHeight: CGFloat = 200 
    let strokeColor:UIColor = UIColor.blackColor() 

    // Make a graphics context 
    UIGraphicsBeginImageContextWithOptions(CGSize(width: imageWidth, height: imageHeight), false, 0.0) 
    let context = UIGraphicsGetCurrentContext() 

    CGContextSetStrokeColorWithColor(context, strokeColor.CGColor) 

    for path in paths { 
     path.stroke() 
    } 
    let image = UIGraphicsGetImageFromCurrentImageContext() 

    UIGraphicsEndImageContext() 

    return image 
} 
+0

답장을 보내 주셔서 감사합니다. 내 문제에 대한 또 다른 해결책을 찾았지만 귀하의 코드가 작동한다고 생각합니다. 나는 그것을 옳은 대답으로 받아 들일 것이다. –