CIGaussianBlur有时会更改imageOrientation

在我的iOS应用程序中,我想在UIImage上应用一个filterCIGaussianBlur,当它获得一个高度大的图像时,它会旋转图像

CIContext *context = [CIContext contextWithOptions:nil]; CIImage *inputImage = [[CIImage alloc] initWithImage:image]; //get image for blur CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"]; [blurFilter setDefaults]; [blurFilter setValue:inputImage forKey:@"inputImage"]; CGFloat blurLevel = 0.0f; // Set blur level [blurFilter setValue:[NSNumber numberWithFloat:blurLevel] forKey:@"inputRadius"]; // set value for blur level CIImage *outputImage = [blurFilter valueForKey:@"outputImage"]; CGRect rect = inputImage.extent; // Create Rect rect.origin.x += blurLevel; // and set custom params rect.origin.y += blurLevel; // rect.size.height -= blurLevel*2.0f; // rect.size.width -= blurLevel*2.0f; // CGImageRef cgImage = [context createCGImage:outputImage fromRect:rect]; // Then apply new rect UIImageOrientation originalOrientation = _imageView.image.imageOrientation; CGFloat originalScale = _imageView.image.scale; UIImage *fixedImage=[UIImage imageWithCGImage:cgImage scale:originalScale orientation:originalOrientation] ; //output of CIGaussianBlur 

这个对我有用。

 _imageView.image=image; UIImageOrientation originalOrientation = _imageView.image.imageOrientation; CGFloat originalScale = _imageView.image.scale; UIImage *fixedImage=[UIImage imageWithCGImage:cgImage scale:originalScale orientation:originalOrientation] ;