Guest User

Untitled

a guest
Feb 23rd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. extension UIImage {
  2. func image(withRotation radians: CGFloat) -> UIImage {
  3. let cgImage = self.cgImage!
  4. let LARGEST_SIZE = CGFloat(max(self.size.width, self.size.height))
  5. let context = CGContext.init(data: nil, width:Int(LARGEST_SIZE), height:Int(LARGEST_SIZE), bitsPerComponent: cgImage.bitsPerComponent, bytesPerRow: 0, space: cgImage.colorSpace!, bitmapInfo: cgImage.bitmapInfo.rawValue)!
  6.  
  7. var drawRect = CGRect.zero
  8. drawRect.size = self.size
  9. let drawOrigin = CGPoint(x: (LARGEST_SIZE - self.size.width) * 0.5,y: (LARGEST_SIZE - self.size.height) * 0.5)
  10. drawRect.origin = drawOrigin
  11. var tf = CGAffineTransform.identity
  12. tf = tf.translatedBy(x: LARGEST_SIZE * 0.5, y: LARGEST_SIZE * 0.5)
  13. tf = tf.rotated(by: CGFloat(radians))
  14. tf = tf.translatedBy(x: LARGEST_SIZE * -0.5, y: LARGEST_SIZE * -0.5)
  15. context.concatenate(tf)
  16. context.draw(cgImage, in: drawRect)
  17. var rotatedImage = context.makeImage()!
  18.  
  19. drawRect = drawRect.applying(tf)
  20.  
  21. rotatedImage = rotatedImage.cropping(to: drawRect)!
  22. let resultImage = UIImage(cgImage: rotatedImage)
  23. return resultImage
  24. }
  25. }
Add Comment
Please, Sign In to add comment