如何裁剪图像并从原始图像设置其裁剪范围
Posted
技术标签:
【中文标题】如何裁剪图像并从原始图像设置其裁剪范围【英文标题】:How to crop an image and set its cropping bounds from the original image 【发布时间】:2013-09-13 08:42:41 【问题描述】:我有一个大小为全屏的UIImageView *userImage
和一个大小为320x320 的UIImageView *imageSquare
。用户将能够使用userImage
将其变大、改变位置等。imageSquare
是静态的,应该被视为裁剪视图
下面的代码可以将userImage
裁剪为imageSquare.frame.size
。我的问题是它从userImage
的顶部而不是从imageSquare.frame.origin
进行裁剪,这意味着我需要从X 和Y 坐标裁剪它。这是我第一次尝试这样做,到目前为止我尝试过的每件事都无法从imageSquare.frame.origin
中裁剪出来。
如何从imageSquare.frame.origin
裁剪userImage
的当前视图(用户正在操作的视图)?
CGSize pageSize = imageSquare.frame.size;
UIGraphicsBeginImageContext(pageSize);
CGContextRef resizedContext = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(resizedContext, userImage.frame.origin.x, userImage.frame.origin.y);
[userImage.layer renderInContext:resizedContext];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (image != nil)
NSLog(@"is not nil");
NSData *imgData = UIImagePNGRepresentation(image);
imageSquare.image = [[UIImage alloc]initWithData:imgData];
【问题讨论】:
【参考方案1】:你需要翻译成否定x
和y
:
CGContextTranslateCTM(resizedContext,
-userImage.frame.origin.x,
-userImage.frame.origin.y);
[userImage.layer renderInContext:resizedContext];
【讨论】:
以上是关于如何裁剪图像并从原始图像设置其裁剪范围的主要内容,如果未能解决你的问题,请参考以下文章