2016-04-08 13 views
0

私はコアグラフィックスを使用して画像を描画しています。別の画像のマスクのように使用したいのですが、ちょうど矩形の画像がきれいです。CGImageRefで画像を切り抜く

私のトリミング機能はどうなっていますか?

UIGraphicsBeginImageContext(CGSizeMake(self.bounds.size.width/0.5, self.bounds.size.height/0.5)) 
    let imageCtx = UIGraphicsGetCurrentContext() 
    CGContextAddArc(imageCtx, CGFloat(self.frame.size.width) , CGFloat(self.frame.size.height), 158, 0, CGFloat(DegreesToRadians(Double(angle))) , 0) 
    CGContextSetLineWidth(imageCtx, 80) 
    CGContextDrawPath(imageCtx, .Stroke) 
    let myMask :CGImageRef = CGBitmapContextCreateImage(UIGraphicsGetCurrentContext())! 

    UIGraphicsEndImageContext() 
    let maskImage = UIImage(CGImage: myMask) 

    let testVideoPreview = UIImage(named: "alex") 
    guard let makedImage = testVideoPreview else {return} 

    var imageMaskOne: CGImageRef = CGImageMaskCreate(CGImageGetWidth(myMask), CGImageGetHeight(myMask), CGImageGetBitsPerComponent(myMask), CGImageGetBitsPerPixel(myMask), CGImageGetBytesPerRow(myMask), CGImageGetDataProvider(myMask), nil,  // Decode is null 
     true)! 

    let masked: CGImageRef = CGImageCreateWithMask(makedImage.CGImage, imageMaskOne)! 

    //Finished 
    let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 350, height: 350)) 
    imageView.image = UIImage(CGImage: masked) 
    self.addSubview(imageView) 

答えて

4

あなただけの特定の作物を作成する必要がある場合は、ここでは簡単な方法CGImageCreateWithImageInRect

func CGImageCreateWithImageInRect(_ image: CGImage?, _ rect: CGRect) -> CGImage? 

documentationがある座標。

+0

矩形部分を切り取るのに最適なソリューションです。 –