iOS10上的[UIImage imageWithCIImage:scale:orientation]是否已损坏?

时间:2016-09-26 14:52:10

标签: ios uiimage ios10

以下代码不再适用于iOS10。图像数据保持不旋转状态。

我已确认此代码适用于iOS 8和9。

CIImage *i = [[CIImage alloc] initWithImage:image];
imageView.image = [UIImage imageWithCIImage:i scale:image.scale orientation:UIImageOrientationRight];

有没有人遇到同样的问题?这是一个错误,还是一个预期的改变?

2 个答案:

答案 0 :(得分:2)

我的猜测是,UIImageView处理图像旋转标志的方式发生了变化。我无法找到任何地方提到的更改,但至少下面的代码可行。 Taken from here

- (UIImage*)rotateImage:(UIImage*)sourceImage clockwise:(BOOL)clockwise
{
    CGSize size = sourceImage.size;
    UIGraphicsBeginImageContext(CGSizeMake(size.height, size.width));
    [[UIImage imageWithCGImage:[sourceImage CGImage]
                         scale:1.0
                   orientation:clockwise ? UIImageOrientationRight : UIImageOrientationLeft]
     drawInRect:CGRectMake(0,0,size.height ,size.width)];

    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

答案 1 :(得分:0)

如果您需要更改CIImage的方向,请尝试此操作。

let newCIImage: CIImage
if #available(iOS 11.0, *) {
    newCIImage = myCIImage.oriented(.right)
} else {
    newCIImage = myCIImage.oriented(forExifOrientation: Int32(CGImagePropertyOrientation.right.rawValue))
}