旋转和裁剪UIImage

时间:2014-09-13 11:25:12

标签: ios objective-c uiimage cgimage

想象一下,我有一个UIImage。 我需要旋转然后在全局坐标系(而不是UIImage坐标系)中裁剪它。因此,生成的图像将被裁剪旋转。

我该怎么做? CGImageCreateWithImageInRect将仅在图像相对坐标中裁剪图像。

enter image description here

PS在评论中回答。你应该使用CIImage。

2 个答案:

答案 0 :(得分:2)

也许这可以帮助

//init
CIImage *image = [CIImage imageWithCGImage:CGImageRef];
//rotation
CIImage *rotatedImage = [image imageByApplyingTransform:someTransform];
//crop
CIImage *croppedImage = [rotatedImage imageByCroppingToRect:someRect];

答案 1 :(得分:0)

轮换时,您需要申请

 CGAffineTransform transform = CGAffineTransformTranslate(self.imageView.transform,deltaX,deltaY);
 transform = CGAffineTransformRotate(transform, recognizer.rotation);
 transform = CGAffineTransformTranslate(transform, -deltaX, -deltaY);
 self.imageView.transform = transform;

对于裁剪,只需更改imageView的框架

即可

要转换本地坐标'图片,只需使用:

// converts a point in local coordinate space to window coordinates. 
[self.imageView convertPoint:localPosition toView:nil];

// use this method to calculate a view's origin in window space like this:
[self.imageView convertPoint:self.imageView.frame.origin toView:nil];

如果您计划将图片编辑器集成到您的应用中,您可以考虑使用第三方,例如:https://github.com/heitorfr/ios-image-editor