CIFilter funktioniert nicht richtig, wenn sich die App im Hintergrund befindet

Wir wenden auf einige Bilder einen CIGaussianBlur-Filter an. Der Prozess funktioniert die meiste Zeit gut. Wenn sich die App jedoch in den Hintergrund bewegt, werden beim Ausführen des Vorgangs weiße Streifen auf dem Bild erzeugt. (Beachten Sie, dass die Bilder unten links und unten weiß gestreift sind und dass das Bild im Vergleich zum Originalbild etwas schrill ist.)

Der Code:

 - (UIImage*)imageWithBlurRadius:(CGFloat)radius
{
    UIImage *image = self;
    LOG(@"(1) image size before resize = %@",NSStringFromCGSize(image.size));
    NSData *imageData = UIImageJPEGRepresentation(self, 1.0);
    LOG(@"(2) image data length = %ul",imageData.length);

    //create our blurred image
    CIContext *context = [CIContext contextWithOptions:nil];
    CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];

    //setting up Gaussian Blur (we could use one of many filters offered by Core Image)
    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
    [filter setValue:inputImage forKey:kCIInputImageKey];
    [filter setValue:[NSNumber numberWithFloat:radius] forKey:@"inputRadius"];
    CIImage *result = [filter valueForKey:kCIOutputImageKey];
    //CIGaussianBlur has a tendency to shrink the image a little, this ensures it matches up exactly to the bounds of our original image
    CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];
    UIImage *finalImage = [UIImage imageWithCGImage:cgImage];

    CGImageRelease(cgImage);
   LOG(@"(3) final image size after resize = %@",NSStringFromCGSize(finalImage.size));
    return finalImage;
}

Vor dem Filter )

Nach Filter

Antworten auf die Frage(2)

Ihre Antwort auf die Frage