A very good stuff that allows you to get rotated image. Sometimes we rotate the UIImageView, it appears like image is rotated but in actual it's the UIImageView which is being rotated. If we try to fetch the image from rotated UIImageView it will return the normal image not the rotated one.
Following snippet will resolve the problem.
UIImage *image = [UIImage imageNamed:@"abc.png"]; // passing actual image; one can customize it here.
if (self.imageOrientation != UIImageOrientationUp) {
image = [self adjustOrientation];
}
UIView *rotatedViewBox = [[UIView alloc] initWithFrame:CGRectMake(0,0,image.size.width, image.size.height)];
CGAffineTransform t = CGAffineTransformMakeRotation(DegreesToRadians(degrees));
rotatedViewBox.transform = t;
CGSize rotatedSize = rotatedViewBox.frame.size;
UIGraphicsBeginImageContext(rotatedSize);
CGContextRef bitmap = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);
CGContextRotateCTM(bitmap, DegreesToRadians(degrees));
CGContextScaleCTM(bitmap, 1.0, -1.0);
CGContextDrawImage(bitmap, CGRectMake(-image.size.width / 2, -image.size.height / 2, image.size.width, image.size.height), [image CGImage]);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
0 Comment(s)