iOS 10:CIKernel';s的ROI功能不允许平铺

iOS 10:CIKernel';s的ROI功能不允许平铺,ios,objective-c,iphone,uiimage,Ios,Objective C,Iphone,Uiimage,在我的iPhone应用程序中,我总是使用以下功能来水平镜像图像 -(UIImage*)mirrorImage:(UIImage*)img { CIImage *coreImage = [CIImage imageWithCGImage:img.CGImage]; coreImage = [coreImage imageByApplyingTransform:CGAffineTransformMakeScale(-1, 1)]; img = [UIImage imageWi

在我的iPhone应用程序中,我总是使用以下功能来水平镜像图像

-(UIImage*)mirrorImage:(UIImage*)img
{
    CIImage *coreImage = [CIImage imageWithCGImage:img.CGImage];
    coreImage = [coreImage imageByApplyingTransform:CGAffineTransformMakeScale(-1, 1)];
    img = [UIImage imageWithCIImage:coreImage scale:img.scale orientation:UIImageOrientationUp];
    return img;
}
但是,在iOS 10.0.1中,此函数仍然没有错误地运行,但是当我尝试使用此函数中的
UIImage
时,会出现以下警告,并且图像似乎不存在

Failed to render 921600 pixels because a CIKernel's ROI function did not allow tiling.
当我尝试使用
UIImage
(在代码的第二行)时,此错误实际上出现在输出窗口中:

调用
mirrorImage
后,
flippedImage
变量确实包含一个值,它不是
nil
,但当我尝试使用该图像时,会收到该错误消息

如果我不调用
mirrorImage
函数,那么代码工作正常:

UIImageView* photo = [[UIImageView alloc] initWithImage:originalImage];
iOS 10的
iOS 10
是否有一些新的怪癖会阻止我的
mirrorImage
功能工作

另外,在
mirrorImage
函数中,我尝试在转换前后测试图像的大小(因为错误是抱怨必须
平铺图像),并且大小相同。

没关系

我不知道什么
ios10
坏了,但我用以下函数替换了我的函数,成功地解决了这个问题:

-(UIImage*)mirrorImage:(UIImage*)img
{
    UIImage* flippedImage = [UIImage imageWithCGImage:img.CGImage
                                                scale:img.scale
                                          orientation:UIImageOrientationUpMirrored];
    return flippedImage;
}

我通过转换CIImage->CGImage->UIImage来修复它

let ciImage: CIImage = "myCIImageFile"

let cgImage: CGImage = {
    let context = CIContext(options: nil)
    return context.createCGImage(ciImage, from: ciImage.extent)!
}()

let uiImage = UIImage(cgImage: cgImage)
let ciImage: CIImage = "myCIImageFile"

let cgImage: CGImage = {
    let context = CIContext(options: nil)
    return context.createCGImage(ciImage, from: ciImage.extent)!
}()

let uiImage = UIImage(cgImage: cgImage)