简体   繁体   中英

iOS how to draw a part of image to a specific rect?

I want to crop a 200*200 image, the cropped part is (x=10,y=10,w=50,h=50). and drawing this part to new 500*500 image, the new rect is (x=30,y=30,w=50, h=50), how to do it?

I can get the part of image with the following method

- (UIImage*) getSubImageWithRect: (CGRect) rect {

    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    // translated rectangle for drawing sub image
    CGRect drawRect = CGRectMake(-rect.origin.x, -rect.origin.y, self.size.width, self.size.height);

    // clip to the bounds of the image context
    // not strictly necessary as it will get clipped anyway?
    CGContextClipToRect(context, CGRectMake(0, 0, rect.size.width, rect.size.height));

    // draw image
    [self drawInRect:drawRect];
    // grab image
    UIImage* subImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return subImage;
}

Lets try using following code chunk

- (UIImage*) getSubImageFromImage:(UIImage *)image
{
      // translated rectangle for drawing sub image
      CGRect drawRect = CGRectMake(10, 10, 50, 50);
      // Create Image Ref on Image
      CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
      // Get Cropped Image
      UIImage *img = [UIImage imageWithCGImage:imageRef];
      CGImageRelease(imageRef);
      return img;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM