旋转和裁剪 UIImage

5

假设我有一张UIImage图片。

我需要在全局坐标系(而不是UIImage的坐标系)中旋转并裁剪它。因此,结果图像将被裁剪并且旋转。

我该怎么做?CGImageCreateWithImageInRect仅会在图像相关的坐标系中裁剪图像。

enter image description here

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

2个回答

2
也许这可以帮助您。
//init
CIImage *image = [CIImage imageWithCGImage:CGImageRef];
//rotation
CIImage *rotatedImage = [image imageByApplyingTransform:someTransform];
//crop
CIImage *croppedImage = [rotatedImage imageByCroppingToRect:someRect];

我刚测试了一下,它可以工作!值得注意的是,仿射旋转会将图像围绕其左下角(CIImage坐标系的零点)旋转,而不是围绕中心旋转,因此在应用裁剪时需要注意坐标。 - gleb.kudr
你能发一下代码吗?用来计算someRect的。我旋转了图片但却不知道如何裁剪想要的矩形,因为旋转后它不在原来的位置上。 - NFilip
对我不起作用。在应用“CGAffineTransform t = CGAffineTransformMakeRotation(degrees);”之后,“imageByCroppingToRect”给我一个空的图像。 - girish_pro

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

谢谢您的回答,但我需要获取内部使用的转换,而不是UIView的转换。 - gleb.kudr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接