Problem in cropping the UIImage using CGContext?

前端 未结 2 2055
太阳男子
太阳男子 2021-01-06 15:28

I developing the simple UIApplication in which i want to crop the UIImage (in .jpg format) with help of CGContext. The developed code till now as follows,

CGImageRef

相关标签:
2条回答
  • 2021-01-06 15:56

    Here is a good way to crop an image to a CGRect:

    
    - (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;
    }
    
    

    Or another way:

    
    - (UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
 {
      CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);

      UIImage *cropped = [UIImage imageWithCGImage:imageRef];
      CGImageRelease(imageRef);
    
    
  return cropped;

    }
    

    From http://www.hive05.com/2008/11/crop-an-image-using-the-iphone-sdk/.

    0 讨论(0)
  • 2021-01-06 16:11

    The context you create to draw the image has the same size that the original image. That's why they have the same size.

    If you don't want to re-invent the wheel, take a look at the TouchCode project on Google Code. You will find UIImage categories that do the job (see UIImage_ThumbnailExtensions.m).

    0 讨论(0)
提交回复
热议问题