0

我从过去几个小时开始搜索并获得裁剪图像的解决方案,但我很困惑,想知道这两者之间有什么区别?

问题:我想从图像内部裁剪一个矩形图像,我已经检测到边界。在此处输入图像描述

第一的 :

 CGRect rect = CGRectMake(0,0,320, 460);

// Create bitmap image from original image data,
// using rectangle to specify desired crop area

CGImageRef imageRef = CGImageCreateWithImageInRect([imageView.image CGImage], rect);
UIImage *imgs = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);

第二 :

CGRect rect = [backView bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();

[backView.layer renderInContext:context];

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
4

1 回答 1

2

第二种方法更通用,因为您backView不需要UIImageView像第一种情况那样是 。

换句话说,CGImageCreateWithImageInRect需要你有一个 CGImage 开始:

CGImageRef imageRef = CGImageCreateWithImageInRect([imageView.image CGImage], rect);

另一方面,renderInContext您可以将任何视图渲染为图像:

[backView.layer renderInContext:context];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
于 2012-10-23T10:22:34.477 回答