2013-05-03 108 views
-3

下面是我的代码,我有裁剪图像的问题,任何人都可以请解决这个问题。问题在裁剪图像

UIGraphicsBeginImageContext(self.view.bounds.size); 

     CGContextRef context = UIGraphicsGetCurrentContext(); 

     CGContextMoveToPoint(context, newPoint1.x, newPoint1.y); 
     CGContextAddLineToPoint(context, newPoint1.x, newPoint2.y); 
     CGContextAddLineToPoint(context, newPoint2.x, newPoint2.y); 
     CGContextAddLineToPoint(context, newPoint2.x, newPoint1.y); 
     CGContextAddLineToPoint(context, newPoint1.x, newPoint1.y); 
     CGContextClosePath(context); 

     UIColor *blue = [UIColor colorWithRed: (0.0/255.0) green: (0.0/255.0) blue: (255.0/255.0) alpha:0.4]; 
     CGContextSetFillColorWithColor(context, blue.CGColor); 

     CGContextDrawPath(context, kCGPathFillStroke); 

回答

2

离开裁剪图像

- (UIImage *)captureScreenInRect:(CGRect)captureFrame 
{ 

    CALayer *layer; 
    layer = self.view.layer; 
    UIGraphicsBeginImageContext(self.view.frame.size); 
    CGContextClipToRect (UIGraphicsGetCurrentContext(),captureFrame); 
    [layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return screenImage; 
} 
0

试试这个这一切只需使用下面的方法。

- (UIImage*)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect 
    { 
     //create a context to do our clipping in 
     UIGraphicsBeginImageContext(rect.size); 
     CGContextRef currentContext = UIGraphicsGetCurrentContext(); 

     //create a rect with the size we want to crop the image to 
     //the X and Y here are zero so we start at the beginning of our 
     //newly created context 
     CGRect clippedRect = CGRectMake(0, 0, rect.size.width, rect.size.height); 
     CGContextClipToRect(currentContext, clippedRect); 

     //create a rect equivalent to the full size of the image 
     //offset the rect by the X and Y we want to start the crop 
     //from in order to cut off anything before them 
     CGRect drawRect = CGRectMake(rect.origin.x * -1, 
            rect.origin.y * -1, 
            imageToCrop.size.width, 
            imageToCrop.size.height); 

     //draw the image to our clipped context using our offset rect 
     CGContextDrawImage(currentContext, drawRect, imageToCrop.CGImage); 

     //pull the image from our cropped context 
     UIImage *cropped = UIGraphicsGetImageFromCurrentImageContext(); 

     //pop the context to get back to the default 
     UIGraphicsEndImageContext(); 

     //Note: this is autoreleased 
     return cropped; 
    }