想象一下,我有一个UIImage。 我需要旋转,然后在全局坐标系(不是UIImage坐标系)中裁剪它。所以结果图像将被裁剪和旋转。旋转和裁剪UIImage
我该怎么做? CGImageCreateWithImageInRect将仅在图像相对坐标中裁剪图像。
PS回答评论。你应该使用CIImage。
想象一下,我有一个UIImage。 我需要旋转,然后在全局坐标系(不是UIImage坐标系)中裁剪它。所以结果图像将被裁剪和旋转。旋转和裁剪UIImage
我该怎么做? CGImageCreateWithImageInRect将仅在图像相对坐标中裁剪图像。
PS回答评论。你应该使用CIImage。
也许这可以帮助
//init
CIImage *image = [CIImage imageWithCGImage:CGImageRef];
//rotation
CIImage *rotatedImage = [image imageByApplyingTransform:someTransform];
//crop
CIImage *croppedImage = [rotatedImage imageByCroppingToRect:someRect];
对于旋转,您需要申请
CGAffineTransform transform = CGAffineTransformTranslate(self.imageView.transform,deltaX,deltaY);
transform = CGAffineTransformRotate(transform, recognizer.rotation);
transform = CGAffineTransformTranslate(transform, -deltaX, -deltaY);
self.imageView.transform = transform;
进行裁剪,简单地改变你的ImageView的框架
要转换本地coordinates'image,只需使用:
// 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
谢谢你的答案,但我需要转换为内部使用,而不是UIView的。 – 2014-09-13 12:32:24
我刚测试过它,它的工作!我应该注意到,仿射旋转将围绕其左下角(CIImage坐标系的零点)旋转图像,而不是围绕其中心,因此在应用裁剪时应该注意坐标。 – 2014-09-13 16:55:02
你可以发布代码如何为someRect进行计算吗?我旋转图像,但我无法弄清楚如何裁剪我想要的矩形,因为旋转后它不在以前的相同位置。 – NFilip 2016-02-16 14:11:20
不适用于我。 “imageByCroppingToRect”在应用“CGAffineTransform t = CGAffineTransformMakeRotation(度)”后为我提供了空的图像;“ – 2016-02-23 14:02:16