想象一下,我有一個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