Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 旋转UIImage生成翻转的图像_Ios_Uiimage_Rotatetransform - Fatal编程技术网

Ios 旋转UIImage生成翻转的图像

Ios 旋转UIImage生成翻转的图像,ios,uiimage,rotatetransform,Ios,Uiimage,Rotatetransform,我正在尝试使用以下代码围绕UIImage的中心旋转UIImage: - (UIImage *) rotateImage: (UIImage *)image angle:(CGFloat)angleInRadian { float newSide = MAX([image size].width, [image size].height); CGSize size = CGSizeMake(newSide, newSide); UIGrap

我正在尝试使用以下代码围绕UIImage的中心旋转UIImage:

- (UIImage *) rotateImage: (UIImage *)image angle:(CGFloat)angleInRadian
    {
        float newSide = MAX([image size].width, [image size].height);
        CGSize size =  CGSizeMake(newSide, newSide);
        UIGraphicsBeginImageContext(size);
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextTranslateCTM(ctx, newSide/2, newSide/2);
        CGContextRotateCTM(ctx, angleInRadian);
        CGContextDrawImage(UIGraphicsGetCurrentContext(),CGRectMake(-[image size].width/2,-[image size].height/2,size.width, size.height),image.CGImage);
        //CGContextTranslateCTM(ctx, [image size].width/2, [image size].height/2);
        
        UIImage *i = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return i;
    }
以下是我获得的结果示例:

输入图像:

角度=0弧度的结果图像:

结果图像被翻转,但我不知道为什么?知道我做错了什么吗


提前谢谢。

对于你想要的东西来说似乎有点过分了。您是否尝试过查看CGAffineTransformRotate:

 CGAffineTransformRotate(rotation.view.transform, angle);

CGContextRotateCTM

CGContextScaleCTM(ctx, 1.0, -1.0);
UIKit坐标系与石英坐标系颠倒。请参阅此处了解更多详细信息


同时检查图像方向。

您得到的UIImage可能已经翻转。如果是这样,则在调用该属性的CGImage属性后,该属性将丢失。总之,所有这些都可以避免,并且非常容易地完成,只需将图像放在图像视图上,在视图上进行转换并创建一个屏幕截图。我已经做了,但它不起作用。你无法转换图像本身,这就是我使用上下文的原因。例如,这可以应用于UIImageView。