代码之家  ›  专栏  ›  技术社区  ›  gleb.kudr

旋转和裁剪UIImage

  •  5
  • gleb.kudr  · 技术社区  · 10 年前

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

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

    enter image description here

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

    2 回复  |  直到 10 年前
        1
  •  2
  •   dopcn    10 年前

    也许这会有所帮助

    //init
    CIImage *image = [CIImage imageWithCGImage:CGImageRef];
    //rotation
    CIImage *rotatedImage = [image imageByApplyingTransform:someTransform];
    //crop
    CIImage *croppedImage = [rotatedImage imageByCroppingToRect:someRect];
    
        2
  •  0
  •   cdescours    10 年前

    对于旋转,您需要应用

     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