在ios中将图像旋转90°时出错

时间:2014-07-09 08:33:37

标签: ios objective-c image rotation uiimage

我使用以下代码旋转图像 -

- (UIImage *)rotateImage:(UIImage*)image byDegree:(CGFloat)degrees
{

UIView *rotatedViewBox = [[UIView alloc] initWithFrame:CGRectMake(0,0,image.size.width,    image.size.height)];
CGAffineTransform t = CGAffineTransformMakeRotation(M_PI/2);
rotatedViewBox.transform = t;
CGSize rotatedSize = rotatedViewBox.frame.size;

UIGraphicsBeginImageContext(rotatedSize);
CGContextRef bitmap = UIGraphicsGetCurrentContext();

CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);

    CGContextRotateCTM(bitmap, M_PI/2);
    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;

}

我原来的形象是 - image before rotate

当我点击旋转时,它旋转不好 - image after rotate

这种行为仅在图像处于纵向模式时发生,即(image.imageOrientation == UIImageOrientationLeft || image.imageOrientation == UIImageOrientationRight)。风景模式图像旋转良好。

如何编辑代码以处理这两种情况?

2 个答案:

答案 0 :(得分:0)

当您的图像处于纵向状态时,请勿应用旋转(或应用π旋转)。您无需像调用它一样更改rotateImage实现。

答案 1 :(得分:0)

我认为UIImageOrientationLeft和UIImageOrientationRight存在问题,其他所有问题,即UIImageOrientationUp和UIImageOrientationDown都与它们看起来一样。

我认为代码中没有问题,不要使用UIImageOrientationLeft和UIImageOrientationRight。问题将得到解决。