Sunday, October 11, 2009

iPhone dev Stupidity 64: Crop image from image


- (UIImage*)imageByCropping: (CGRect)rect


{


UIImage * imageToCrop = self;


// convert the rect from screen coords to Quartz 2D coords


rect = CGRectMake(rect.origin.x, self.height - rect.origin.y - rect.size.height, rect.size.width, rect.size.height);



//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;


}



No comments: